如何从 ajax $_POST 输出一个 PHP 数组并将值拆分或分解为键和值
How to output a PHP array from ajax $_POST and split or explode the values into key and value
我正在尝试获取通过 $_POST 从 ajax 发送的数组值,并使用定界符作为指向 split/explode 的指向到可用变量中。
ajax 样本:
function update_dt_reason() {
$.ajax({
url: "inc/daily.update.dt_reason.php?",
type: "post",
data: $('.dt_reasons:checked').serializeArray(),
success: function(data) {
$('#txtNew').html(data);
}
});
};
PHP的例子:
<?php
$testing = print_r($_POST);
$array = array();
$array = explode('|', $testing);
foreach($array as $key => $testing)
{
$array[$key] = explode('|', $testing);
}
echo "<pre>";
print_r($_POST);
?>
示例输出数组:
Array (
[Well] => Array
(
[0] => 1|5
[1] => 1|3
[2] => 1|1
[3] => 1|6
[4] => 1|7
[5] => 1|2
[6] => 1|4
[7] => 2|1
[8] => 2|6
[9] => 2|7
[10] => 2|4
[11] => 3|5
[12] => 3|1
))
期望的输出:
以下两项之一:
Array ([0] => 1 => 5)
Array ([1] => 1 => 3)
Array ([2] => 1 => 1) etc.
或者,哪个更好:
Array
(
[0] => 1 => Array
(
[0]=>5
[1]=>3
[2]=>1
[3]=>6
[4]=>7
[5]=>2
...
)
[1] => 2 => Array
(
[0]=>1
[1]=>6
[2]=>1
[3]=>7
[4]=>4
)
[2] => 3 => Array
(
[0]=>5
[1]=>1
)
没有更多信息我无法提交,所以我会尝试提供更多信息,同时保持相关性。
我正在使用一个带有多个复选框的表单,这些复选框分配给 sql 数据库中的 ID。它们都已列出,并绑定回将由框的 check/uncheck 更新的记录。
我正在尝试添加图片以供视觉参考。
您的 PHP 脚本中有几个错误。试试这个:
<?php
$testing = print_r($_POST);
$array = array();
// $array = explode('|', $testing); // Remove this line
foreach($_POST['Well'] as $key => $testing) // Loop over the POSTed array
{
$array[$key] = explode('|', $testing);
}
echo "<pre>";
print_r($array); // Print the result, not the input.
?>
这是一个生成您首选格式的版本:
<?php
$_POST['Well']=[0=>"1|2", 1=>'3|4', 2=>'1|5'];
$arr = [];
foreach($_POST['Well'] as $val) {
$t = explode("|",$val);
if (!isset($arr, $t[0])) {
$arr[$t[0]] = [];
}
$arr[$t[0]][] = $t[1];
}
print_r($arr);
输出:
Array
(
[1] => Array
(
[0] => 2
[1] => 5
)
[3] => Array
(
[0] => 4
)
)
我正在尝试获取通过 $_POST 从 ajax 发送的数组值,并使用定界符作为指向 split/explode 的指向到可用变量中。
ajax 样本:
function update_dt_reason() {
$.ajax({
url: "inc/daily.update.dt_reason.php?",
type: "post",
data: $('.dt_reasons:checked').serializeArray(),
success: function(data) {
$('#txtNew').html(data);
}
});
};
PHP的例子:
<?php
$testing = print_r($_POST);
$array = array();
$array = explode('|', $testing);
foreach($array as $key => $testing)
{
$array[$key] = explode('|', $testing);
}
echo "<pre>";
print_r($_POST);
?>
示例输出数组:
Array (
[Well] => Array
(
[0] => 1|5
[1] => 1|3
[2] => 1|1
[3] => 1|6
[4] => 1|7
[5] => 1|2
[6] => 1|4
[7] => 2|1
[8] => 2|6
[9] => 2|7
[10] => 2|4
[11] => 3|5
[12] => 3|1
))
期望的输出: 以下两项之一:
Array ([0] => 1 => 5)
Array ([1] => 1 => 3)
Array ([2] => 1 => 1) etc.
或者,哪个更好:
Array
(
[0] => 1 => Array
(
[0]=>5
[1]=>3
[2]=>1
[3]=>6
[4]=>7
[5]=>2
...
)
[1] => 2 => Array
(
[0]=>1
[1]=>6
[2]=>1
[3]=>7
[4]=>4
)
[2] => 3 => Array
(
[0]=>5
[1]=>1
)
没有更多信息我无法提交,所以我会尝试提供更多信息,同时保持相关性。
我正在使用一个带有多个复选框的表单,这些复选框分配给 sql 数据库中的 ID。它们都已列出,并绑定回将由框的 check/uncheck 更新的记录。
我正在尝试添加图片以供视觉参考。
您的 PHP 脚本中有几个错误。试试这个:
<?php
$testing = print_r($_POST);
$array = array();
// $array = explode('|', $testing); // Remove this line
foreach($_POST['Well'] as $key => $testing) // Loop over the POSTed array
{
$array[$key] = explode('|', $testing);
}
echo "<pre>";
print_r($array); // Print the result, not the input.
?>
这是一个生成您首选格式的版本:
<?php
$_POST['Well']=[0=>"1|2", 1=>'3|4', 2=>'1|5'];
$arr = [];
foreach($_POST['Well'] as $val) {
$t = explode("|",$val);
if (!isset($arr, $t[0])) {
$arr[$t[0]] = [];
}
$arr[$t[0]][] = $t[1];
}
print_r($arr);
输出:
Array
(
[1] => Array
(
[0] => 2
[1] => 5
)
[3] => Array
(
[0] => 4
)
)