Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que o foreach não reconhece as aspas para fechar a string?

Eu fui tentar misturar as coisas para ter acesso a todos os dados sem precisar ficar concatenando tudo com o pontos, mas o vscode retorna que está faltando alguma aspas. Podem me explicar o que há de errado?


$contasCorrentes =
[
    1231321 => [
        "titular" => "Vinicius",
        "saldo" => 1000
    ],
    654321 => [
        "titular" => "Maria",
        "saldo" => 10000
    ],
    123123 => [
        "titular" => "Alberto",
        "saldo" => 3500
    ]
];

foreach ($contasCorrentes as $key => $value) {
    echo "Chave: $key, nome: $value["titular"], saldo: $value["saldo"]" . PHP_EOL;
}
2 respostas
solução!

Para indicar que algo é uma string vc deve botar entre aspas;

$string = "tudo que esta entre as aspas é uma string";

No seu código a chave do seu array é uma string, então o php esta achando que a string finaliza quando vc escreve as apasas do array. Meio dificil explicar apenas com texto. Mas resumindo para escrever um array dentro de um astring vc deve utilizar {} e escrever o array dentro delas assim {$array["indice"]}.

// desta maneira vai dar certo
foreach ($contasCorrentes as $key => $value) {
    echo "Chave: $key, nome: {$value["titular"]}, saldo: {$value["saldo"]}" . PHP_EOL;
}

Douglas, vc pode resolvar de 3 formas

foreach ($contasCorrentes as $key => $value) {
    echo "Chave: $key, nome: ${value["titular"]}, saldo: ${value["saldo"]}" . PHP_EOL;
    echo "Chave: $key, nome: $value[titular], saldo: $value[saldo]" . PHP_EOL;
    echo "Chave: $key, nome: " . $value["titular"] . ", saldo: " . $value["saldo"] . PHP_EOL;
}