1
resposta

Montar um array a partir do mesmo

$nota = [
    3, 4, 9, 10
];

$aluno = [
   ana, luiz, carlos, jose
];

Como fazer para retornar

[ [ nota => 3, aluno => ana], [ nota => 4, aluno => luiz], [ nota => 9, aluno => carlos], [ nota => 10, aluno => jose], ]

Isso usando essas funções intrínsecas do PHP.

1 resposta

Oi Francisco, tudo bem?

Não tenho acesso as aulas para saber o conteúdo dado nesse capítulo, mas vou te dar uma solução para esse problema usando a função map. Eu criei uma função auxiliar assoc para deixar o código mais organizado, porém, essa função só funciona com o PHP 8.1, por que utilizei o spread operator para descompactar um array onde as chaves são do tipo string... caso utilize uma versão anterior eu posso refatorar esse código pra você, caso se interesse.

$nota = [
    3, 4, 9, 10
];

$aluno = [
   'ana', 'luiz', 'carlos', 'jose'
];

$assoc = function ($chave, $posicao, $arrInical, $arrDeEntrada) {
    return [...$arrInical, $chave => $arrDeEntrada[$posicao]];
};

$notas = array_map(
    fn ($arr) => $assoc('aluno', 1, $assoc('nota', 0, [], $arr), $arr),
    array_map(fn ($nota, $aluno) => [$nota, $aluno], $nota, $aluno)
);

var_dump($notas);

Existem diversas formas de resolver esse problema (com recursão, por exemplo), mas a idéia foi usar uma função nativa do PHP que manipula arrays: map.

Qualquer dúvida, estou à disposição.