2
respostas

DUVIDA: LETRA SO FICA MAIUSCULA ANTES DO FOREACH

Boa tarde gente, fiz o codigo do $conta ["titular"] = mb_strtoupper($conta ["titular"]); e reparei que o comando so obedece se feito ANTES do comando FOREACH

TitularComLetrasMaiusculas($contasCorrentes["12345678912"]);

foreach ($contasCorrentes as $cpf => $contas) {   (...)
//assim funciona!

Desse jeito, e não funciona se feito apos FOREACH,

foreach ($contasCorrentes as $cpf => $contas) {          (...)

TitularComLetrasMaiusculas($contasCorrentes["09896059900"]);

//assim não funciona

consegui resolver a duvida, so queria um explicação logica do porque o comando tem que ser antes e nao depois! agradeço desde já!

2 respostas

A princípio o PHP interpreta as instruções/comandos de forma sequencial

Olá, Bruno!

Utilize o código abaixo:

foreach( $contasCorrentes as $cpf => $conta ) {
    titularComLetrasMaiusculas( $contasCorrentes[ $cpf ] ); 
}

Neste caso, cada uma das definições de conta que existirem no vetor (array), será passada para a função e ela converterá o valor do titular para letras maiúsculas.

Seu código

TitularComLetrasMaiusculas($contasCorrentes["09896059900"]);

está realizando a alteração no mesmo elemento do vetor (array), para cada elemento existente. Ou seja, se você definiu 4 contas no array, ele executará a mesma instrução para o elemento com índice "09896059900", quatro vezes.

E, também, não se esqueça de configurar o parâmetro da função "titularComLetrasMaiusculas(...)" para receber, por referência, a variável passada. Para isso, basta colocar o símbolo & na frente da definição do nome do parâmetro:

function titularComLetrasMaiusculas( array &$conta ) { ... }

Espero ter ajudado.

Abs