explode/implode 中的数组 PHP
explode/implode array in PHP
不确定我为什么会遇到这个问题。我在以前的项目中使用过相同的代码,没有任何问题。
我正在使用 JavaScript 中的复选框生成数组。我可以成功地将 $.post 数组转换为 PHP,但我不断收到以下错误:
Warning: explode() expects parameter 2 to be string, array
given in D:\htdocs\deliverynoticeV2\process\updateRecord.php on
line 14
Warning: implode(): Invalid arguments passed in
D:\htdocs\deliverynoticeV2\process\updateRecord.php on line
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;
}
?>
如前所述,我在之前的项目中使用过相同的代码。为什么我会收到上述错误消息?
您实际上不需要 explode()
之前的 implode()
调用,因为您发送的数据是数组(您的 js 中的变量是数组)。
所以你所有的 $_POST
变量都是数组。
不确定我为什么会遇到这个问题。我在以前的项目中使用过相同的代码,没有任何问题。
我正在使用 JavaScript 中的复选框生成数组。我可以成功地将 $.post 数组转换为 PHP,但我不断收到以下错误:
Warning: explode() expects parameter 2 to be string, array given in D:\htdocs\deliverynoticeV2\process\updateRecord.php on line 14
Warning: implode(): Invalid arguments passed in D:\htdocs\deliverynoticeV2\process\updateRecord.php on line 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;
}
?>
如前所述,我在之前的项目中使用过相同的代码。为什么我会收到上述错误消息?
您实际上不需要 explode()
之前的 implode()
调用,因为您发送的数据是数组(您的 js 中的变量是数组)。
所以你所有的 $_POST
变量都是数组。