如何从 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
        )

)