2
respostas

erro

Chamo o código e ele retorna o seguinte resultado

php banco2.php 
PHP Notice:  Undefined offset: 112345678 in /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php on line 46
PHP Stack trace:
PHP   1. {main}() /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php:0
PHP Notice:  Trying to access array offset on value of type null in /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php on line 18
PHP Stack trace:
PHP   1. {main}() /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php:0
PHP   2. sacar() /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php:46
Você não pode sacar este valor
12345678 Vinicius 1000
12345679 Maria 10000
12345670 Alberto 300
PHP Notice:  Trying to access array offset on value of type null in /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php on line 49
PHP Stack trace:
PHP   1. {main}() /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php:0
PHP Notice:  Trying to access array offset on value of type null in /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php on line 49
PHP Stack trace:
PHP   1. {main}() /home/leandro/Documentos/minha_programacao/Cursos/Alura/PHP/2 - Avançando PHP/banco2.php:0
112345678  

O codigo é o seguinte:

<?php

/*function olaMundo(){
    echo "olaMundo";
}*/

/*function adciona2($x){
    // retornando o valor
    return $x + 2;
}

$sete = adciona2(5);
echo $sete;

exit();*/ 

function sacar($conta, $valorSacar){
    if ($valorSacar > $conta['saldo']) {
        echo exibeMensagem("Você não pode sacar este valor");
    } else {
        $$conta['112345678']['saldo'] -= $valorSacar;
    }
    return $conta;
}

function exibeMensagem($mensagem){
    echo $mensagem.PHP_EOL;
}

$contasCorrentes = [
    12345678 => [
        'titular' => 'Vinicius',
        'saldo' => 1000
    ], 
    12345679 => [
        'titular' => 'Maria',
        'saldo' => 10000
    ], 
    12345670 => [
        'titular' => 'Alberto',
        'saldo' => 300
    ],
    ];


$contasCorrentes['112345678'] = sacar($contasCorrentes['112345678'], 500);

foreach ($contasCorrentes as $cpf => $conta) {
    echo exibeMensagem($cpf . " " . $conta['titular'] . ' ' . $conta['saldo']);
}

//olaMundo();

OBSERVAÇÃO Utilizo visual studio code

2 respostas

Oap, boa tarde Leandro!1 Tudo bem ?! No caso, voce esta tentando acessar uma chave que nao existe no seu array de $contasCorrentes ou voce pode criar essa nova chave na seu array $contasCorrentes como fez com as outras:

$contasCorrentes = [
    12345678 => [
        'titular' => 'Vinicius',
        'saldo' => 1000
    ],
    12345679 => [
        'titular' => 'Maria',
        'saldo' => 10000
    ],
    12345670 => [
        'titular' => 'Alberto',
        'saldo' => 300
    ],
    112345678 => [
        'titular' => 'Novo tiular',
        'saldo' => 400
    ]
];

Mas se precisar mesmo adicionar essa conta sem modificar seu array original, pode passar apenas uma chave valida no parametro do metodo sacar (o array $contasCorrentes) nesse caso:

// Apenas passar uma chave de conta valida para o metodo sacar
$contasCorrentes['112345678'] = sacar($contasCorrentes[12345670], 500);

Correção promovida e passou a funcionar obrigado