Ir para conteúdo
Fórum Script Brasil
  • 0

Como corrigir o erro "array_map(): Argument #2 ($array)"?


R SM

Pergunta

Estou tentando salvar uma lista de itens com nome e quantidades, mas ao enviar o formulário via AJAX para o PHP dá fatal error e o erro_log do PHP está apontando ser este erro:

[04-Dec-2022 16:55:48 America/Sao_Paulo] PHP Fatal error:  Uncaught TypeError: array_map(): Argument #2 ($array) must be of type array, null given in /home/egacnetb/public_html/acessar/controller/licencaController.php:6327
Stack trace:
#0 /home/egacnetb/public_html/acessar/controller/licencaController.php(6327): array_map(Object(Closure), NULL, Array, NULL, Array, NULL)
#1 {main}
  thrown in /home/egacnetb/public_html/acessar/controller/licencaController.php on line 6327 

Mas eu não conheço e nunca vi este erro, por isso não sei como corrigi-lo. Alguém pode me ajudar?

Aqui está o código do meu arquivo controller PHP ao qual o erro_log aponta estar errado:

  require "verifica.php"; // Verifica -> Empreendimento.
      
      $_POST['qtdeProduzida'] = str_replace('.', '', $_POST['qtdeProduzida']); 
      $_POST['qtdeProduzida'] = str_replace(',', '.', $_POST['qtdeProduzida']);
      
      $_POST['materiaPrima'] = str_replace('.', '', $_POST['materiaPrima']); 
      $_POST['materiaPrima'] = str_replace(',', '.', $_POST['materiaPrima']);

       ob_start();   
       $dados = array(
      'mesAno_Prod' => $_POST['mesAno_Prod'],
      'diasProducao_Mensal' => $_POST['diasProducao_Mensal'],
      'nomeProduto' => $_POST['nomeProduto'],
      'materiaPrima' => $_POST['materiaPrima'],
      'medidaQtdeMatPrima' => $_POST['medidaQtdeMatPrima'],
      'qtdeProduzida' => $_POST['qtdeProduzida'],
      'medidaQtdeProd' => $_POST['medidaQtdeProd'],
      'endid_me' => $_POST['endid_me'],
        );  
        
$sessid = $_SESSION['id_usuario'];

$_SESSION['id_unico'] = $idUnico = mt_rand('10000', '99999999999').date('ymdhis').uniqid().mt_rand('100','9999').time();


array_map(function ($v1, $v2, $v3, $v4, $v5) {

// $inserirRgstr1 = ("INSERT INTO `tbl_mapa_estatistico` (mesAno_Prod,diasProducao_Mensal,endid_me,autorid_me,data_me,nomeProduto,materiaPrima,medidaQtdeMatPrima,qtdeProduzida,medidaQtdeProd) VALUES (:mesAno_Prod,:diasProducao_Mensal,:endid_me,:autorid_me,:data_me,:nomeProduto,:materiaPrima,:medidaQtdeMatPrima,:qtdeProduzida,:medidaQtdeProd)");
      
     $inserirRgstr1 = ("INSERT INTO `tbl_mapa_estatistico` (idUnico_me,data_me,nomeProduto,materiaPrima,medidaQtdeMatPrima,qtdeProduzida,medidaQtdeProd) VALUES (:idUnico_me,:data_me,:nomeProduto,:materiaPrima,:medidaQtdeMatPrima,:qtdeProduzida,:medidaQtdeProd)");
                          
    $exec1 = $conn->prepare($inserirRgstr1);
 
    $r1 = $exec1->execute(array(
    ':idUnico_me' => $_SESSION['id_unico'],
    ':data_me' => date('Y-m-d\TH:i:s'),
    ':nomeProduto' => $v1,
    ':materiaPrima' => $v2,
    ':medidaQtdeMatPrima' => $v3,
    ':qtdeProduzida' => $v4,
    ':medidaQtdeProd' => $v5
    ));           
            
echo $idUnico; 

}, $dados['nomeProduto'], $dados['materiaPrima'], $dados['medidaQtdeMatPrima'], $dados['qtdeProduzida'], $dados['medidaQtdeProd']);

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
6 horas atrás, R SM disse:
}, $dados['nomeProduto'], $dados['materiaPrima'], $dados['medidaQtdeMatPrima'], $dados['qtdeProduzida'], $dados['medidaQtdeProd']);

A mensagem está dizendo que o segundo argumento deve ser um array

no php.net
image.png.b0e7f4161eeed18e310aa7c561e168f4.png
diz que todo argumento deve ser um array

Algumas dessas variáveis passadas não são array

No caso específico, o valor de $dados['materiaPrima'] não é um array, é null 

Link para o comentário
Compartilhar em outros sites

  • 0

O Iowys tem razão, um dos vetores não tem nada. Fiz um código mais simples que chegou na mesma mensagem de erro.
 

<?php
function soma($v1,$v2){return $v1+$v2;}
$v1=[1,2,3];$v2=null;
var_dump ( array_map('soma',$v1,$v2) );

Mensagem: Fatal error: Uncaught TypeError: array_map(): 
Argument #3 must be of type array, null given in 
C:\wamp64\www\astudy\astudy.php on line 4

Nesse caso, use var_dump($v2) antes do código do array_map para confirmar que o Iowys tem razão. O problema é saber porque a variável array $v2 não foi definida.

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...