1
resposta

Foreach me soa confuso no meu código mas funciona

Fiz um Do while para o programinha do banco apenas aceitar que o usuario entre com um valor de CPF que esteja dentro do array, confesso que copiei o foreach da aula anterior mas não compreendi como ele me traz o valor exato do CPF e o código funciona.

$contas = [
  '123.456.789-10' =>[
    'titular' => 'Bianca',
    'saldo' => 1000,
    'senha' => '1234'
  ],
  '123.456.789-11' =>[
    'titular' => 'Alberto',
    'saldo' => 10000,
    'senha' => '1234'
  ],
  '123.456.789-12' =>[
    'titular' => 'Vinicius',
    'saldo' => 300,
    'senha' => '1234'
    ]
];

function VerificaCpf(String $CpfDigitado, array $Contas) //Verifica se o cpf digitado existe dentro do array
{
  foreach ($Contas as $cpf => $conta) {
    if ($CpfDigitado == $cpf){
      return false;
    }
  }
  echo " CPF não encontrado!" . PHP_EOL . PHP_EOL;
  return true;
}

do {
   $cpf = readline(' Digite o CPF do titular: ');
} while (VerificaCpf($cpf, $contas));
echo " Bem-vindo(a) " . $contas[$cpf]['titular'] . "!" . PHP_EOL;
echo ' Seu saldo atual é de R$ ' . $contas[$cpf]['saldo'] . PHP_EOL . PHP_EOL;
1 resposta

Olá, Carlos. Tudo bem?

Primeiramente, peço desculpas pela demora em responder a sua pergunta.

A estrutura de repetição foreach() percorre todos os elementos de um array. Ele é semelhante ao for(), entretanto, diferente do for() não precisamos informar ao foreach() o tamanho do array que precisa ser percorrido.

Repare que o seu array $contas é um array multidimensional, ou seja, ele é um array de arrays.

$contas = [
  '123.456.789-10' =>[
    'titular' => 'Bianca',
    'saldo' => 1000,
    'senha' => '1234'
  ],
  '123.456.789-11' =>[
    'titular' => 'Alberto',
    'saldo' => 10000,
    'senha' => '1234'
  ],
  '123.456.789-12' =>[
    'titular' => 'Vinicius',
    'saldo' => 300,
    'senha' => '1234'
    ]
];

Vamos imprimir o seu array $contas utilizando o foreach:

foreach ($contas as $cpf => $conta) {
    echo $cpf . " é do(a) ". $conta['titular'] .PHP_EOL;
}

Podemos ler o foreach acima dessa maneira:

Para cada item em $contas, disponibilize o índice na variável $cpf e o valor na variável $conta.

Dessa forma, o foreach() percorrerá todos os itens do array, disponibilizando a chave e o valor de cada elemento.

Obs: Como estamos trabalhando com um array multidimensional, o variável $conta do foreach será um outro array, por isso acessamos o valor do titular através da chave: 'titular'. Dessa forma: $conta['titular'].

Espero ter ajudado, Carlos. Abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!