5
respostas

Fatal error ao passar array na função

Bom dia pessoal Meu código esta apresentando erro abaixo. estou usando o Mac. Quando passo na função array na declaração apresenta este erro.

function titularComLetrasMaiusculas(array &$conta)
{

    $conta['titular'] = strtoupper($conta ['titular']);

} 

Fatal error: Uncaught TypeError: Argument 1 passed to titularComLetrasMaiusculas() must be of the type array, null given, called in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/funcoes.php on line 30 and defined in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/funcoes.php:23 Stack trace:

#0 /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/funcoes.php(30): titularComLetrasMaiusculas(NULL)

#1 /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/banco.php(3): require('/Users/danielda...')

#2 {main} thrown in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/funcoes.php on line 23 danieldacol@MacBook-Pro-Dacol PHP_3 % php banco.php 123.456.789-10 Vinicius 1300 123.456.789-11 Maria 12000 123.456.789-12 Alberto 3300

#

Quando removo a declaração do array na função fica assim uma copia vazia.

código Função

function titularComLetrasMaiusculas(&$conta)
{

    $conta['titular'] = strtoupper($conta ['titular']);

}

código Banco

titularComLetrasMaiusculas($contasCorrentes['123.256.789-10']);

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

Retorno terminal

danieldacol@MacBook-Pro-Dacol PHP_3 % php banco.php 123.456.789-10 Vinicius 1300 123.456.789-11 Maria 12000 123.456.789-12 Alberto 3300 123.256.789-10

5 respostas

Olá Daniel, no erro fala que você tem que passar um array como parâmetro, certificou que esta sendo passado um array valido como argumento ? na função fala que ta sendo um valor NULL,

$contaUsuario = ['titular' => 'lazaro'];

function titularComLetrasMaiusculas(array &$conta)
{

    $conta['titular'] = strtoupper($conta ['titular']);
}

print_r($contaUsuario); // antes da função, com letras minúsculas
titularComLetrasMaiusculas($contaUsuario); // alterando as letras para maiúsculas
print_r($contaUsuario); 

essa função ta idêntica a sua, e ta executando normal,porém estou passando um array valido.

tente criar essa mesma função em um arquivo separado, e fazer um teste nela passando parâmetros diferente de um array, para você ver como ela se comporta.

Está acontecendo o seguinte:

function titularComLetrasMaiusculas(array &$conta)

Ao tipar o parametro como array voce está fazendo com que a função apenas aceite array. titularComLetrasMaiusculas($contasCorrentes['123.256.789-10']);

Voce não mostrou a definição do array, porem pela mensagem de erro o indice '123.256.789-10' no array $contasCorrentes não é um array.

Bom dia, obrigado. Segue outro exemplo:

<?php
$contasCorrentes = [
    '123.456.789-10'=> ['titular' => 'Vinicius', 'saldo'   => 300]
];

function titularComLetrasMaiusculas(array &$conta)
{
    $conta['titular'] = strtoupper($conta['titular']);
}

titularComLetrasMaiusculas($contasCorrentes['123.256.789-10']);

foreach ($contasCorrentes as $cpf => $conta) {

    echo("$cpf {$conta['titular']} {$conta['saldo']}");
}

danieldacol@MacBook-Pro-Dacol PHP_3 % php testeArray.php

Fatal error: Uncaught TypeError: Argument 1 passed to titularComLetrasMaiusculas() must be of the type array, null given, called in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php on line 11 and defined in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php:6 Stack trace:

#0 /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php(11): titularComLetrasMaiusculas(NULL)

#1 {main} thrown in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php on line 6

Bom dia, Lázaro Portugal dos santos, o código que você enviou rodou beleza.

Meu código que esta gerando erro é igual ao exercício do curso.

A linha de código do Array associativo esta assim :

$contasCorrentes = ['123.456.789-10' => ['titular' => 'Vinicius', 'saldo'   => 300]];

O código inteiro esta assim, porem na aula esse código rodou, somente queria saber aonde esta o erro. segue codigo inteiro.

<?php
$contasCorrentes = ['123.456.789-10' => ['titular' => 'Vinicius', 'saldo'   => 300]];


function titularComLetrasMaiusculas(array &$conta)
{
    $conta['titular'] = strtoupper($conta['titular']);
}

titularComLetrasMaiusculas($contasCorrentes['123.256.789-10']);

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

danieldacol@MacBook-Pro-Dacol PHP_3 % php testeArray.php

Fatal error: Uncaught TypeError: Argument 1 passed to titularComLetrasMaiusculas() must be of the type array, null given, called in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php on line 10 and defined in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php:5 Stack trace:

#0 /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php(10): titularComLetrasMaiusculas(NULL)

#1 {main} thrown in /Users/danieldacol/PhpstormProjects/ola_mundo/PHP_3/testeArray.php on line 5

Olá Daniel Dacol, tudo certo ? espero que sim.

Bom olhando seu código novamente reparei que tem um erro bem simples deixamos passar despercebido, o código ta perfeito, o erro é somente quando você chama a funçãotitularComLetrasMaiusculas($contasCorrentes['123.256.789-10']); você ta passando um cpf diferente do que foi definido na primeira linha de cima, esse cpf não corresponde ao cpf do vinicius .

$contasCorrentes = ['123.456.789-10' => ['titular' => 'Vinicius', 'saldo'   => 300]];

titularComLetrasMaiusculas($contasCorrentes['123.256.789-10']); 

repare que o cpf que foi definido dentro de $contasCorrentes não é o mesmo que tá sendo passado por parâmetro da função .

por isso o código gera um erro dizendo que é nulo, porque esse índice não existe e nem é um array.