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

[Dúvida] Erro ao executar array_key_exists

Ao executar a função array_key_exists tem apresentado um fatal error "Cannot use positional argument after named argument. Qual a solução ?

$notas = [
    [
        'aluno' => 'Ana',
        'nota' => 9.6,
    ],
    [
        'aluno' => 'João',
        'nota' => 8.2,
    ],
    [
        'aluno' => 'Lucas',
        'nota' => 6.8
    ],

 ];

 var_dump(array_key_exists(key:'Ana', $notas));

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Boa noite Anthony ,

A função array_key_exists, serve para verificar, se a chave do indice existe no array, no seu exemplo você está buscando pelo valor que a chave possui, nesse caso 'Ana'. A mensagem informa que não foi possivel utilizar o argumento, é bem provavel que o erro esteja no "key:"

Você está buscando um array dentro de outro array, neste caso você está trabalhando com array multidimensional, se rescrever o var_dump assim:

var_dump(array_key_exists('aluno', $notas));

O resultado vai ser bool(false), isso ocorre porque a chave do indice do primeiro array é 0,1 e 2, e somente depois é que temos outra array com os indices dos alunos.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Mas se alterar o var_dump novamente para:

var_dump(array_key_exists('aluno', $notas[0]));

A saída será bool(true), entretanto ele só vai fazer a pesquisa no primeiro registro; o registro [0]. Acredito que a intensão é fazer uma pesquisar em todo o array e encontrar um determinado valor como o nome do aluno, para isso você pode utilizar o foreach para pesquisar o valor dentro do array multidimensional.

Segue um exemplo:

foreach($notas as $notas => $data) {    
    if(stripos($data['aluno'], 'Ana') !== false) {
        $aluno[] = $data; 
    }
}
print_r($aluno);

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Nesse exemplo é criado um novo array de saída, contendo apenas os valores referente ao dados do aluno pesquisado.

Caso tenha resolvido a sua duvida, por favor marque a dúvida como resolvido.

Deu certo !! Obrigado