【问题标题】:explode/implode array in PHPPHP中的爆炸/内爆数组
【发布时间】:2019-07-26 05:19:25
【问题描述】:

不知道为什么我会遇到这个问题。我在以前的项目中使用过相同的代码,没有任何问题。

我正在使用 JavaScript 中的复选框生成一个数组。我可以成功 $.post 数组到 PHP,但我不断收到以下错误:

警告:explode() 期望参数 2 是字符串、数组 在 D:\htdocs\deliverynoticeV2\process\updateRecord.php 中给出 第 14 行

警告: implode(): 传入的参数无效 D:\htdocs\deliverynoticeV2\process\updateRecord.php 上线 15

它重复相同的错误大约 4 次,因为我要发送 4 个不同的数组。

从 JavaScript 开始:

$('#updateRecords').on('click', function(e)
{ 
  e.preventDefault();
  $('#updateForm input').val('');

  var checkcontainer = [];
  var checkorder = [];
  var checktrucker = [];
  var checkconsignee = [];

  $(".checkEdit:checked").each(function(){
    checkcontainer.push($(this).data("checkcontainer"));
    checkorder.push($(this).data("checkorder"));
    checktrucker.push($(this).data("checktrucker")); 
    checkconsignee.push($(this).data("checkconsignee")); 
  });

  console.log(checkcontainer);

  $.post('process/updateRecord.php', {checkcontainer:checkcontainer,
  checkorder:checkorder, checktrucker:checktrucker, checkconsignee:checkconsignee}, 
  function(data)
  {
    console.log(data);
  }); 
});

当我控制台输出变量“checkcontainer”时,我看到以下内容:

["FSCU7122545", "TGHU6235458", "TCNU6900047"]

在 PHP 中,代码如下所示:

<?php
if(isset($_POST['checkcontainer']))
{
  $checkcontainer = $_POST['checkcontainer'];
  $checkorder = $_POST['checkorder'];
  $checktrucker = $_POST['checktrucker'];
  $checkconsignee = $_POST['checkconsignee'];

  $containerSplit = explode(",", $checkcontainer);
  $containers = "'" . implode("', '", $containerSplit) . "'";
  $orderSplit = explode(",", $checkorder);
  $orders = "'" . implode("', '", $orderSplit) . "'";
  $truckerSplit = explode(",", $checktrucker);
  $truckers = "'" . implode("', '", $truckerSplit) . "'";      
  $consigneeSplit = explode(",", $checkconsignee);
  $consignees = "'" . implode("', '", $consigneeSplit) . "'";

  echo $containers;
}
?>

如上所述,我在之前的项目中使用过相同的代码。为什么我会收到上述错误?

【问题讨论】:

标签: javascript php jquery explode implode


【解决方案1】:

您实际上不需要在您的implode() 之前调用explode(),因为您发送的数据是数组(您在js 中的变量是数组)。 所以你所有的$_POST 变量都是数组。

【讨论】:

  • 成功。我想知道为什么我以前的项目中没有这个问题。我可能不得不重新审视一下,看看为什么。感谢您的快速解决。
  • 您发送数据的方式可能不同
  • 再次感谢,我的朋友。当系统允许时,我会接受你的回答。