在没有递归的情况下展平多维数组

时间:2012-12-22 14:40:40

标签: php multidimensional-array

这是我正在研究的膳食计划应用程序。到目前为止,我已经获得了很多有用的帮助。您可以在http://maureenmoore.com/momp_tests/122212.html

看到查看来源

我在我的process.php中使用以下内容(jquery表单被提交到了)

$stack = array();

foreach ($_REQUEST as $key => $value)
{
    array_push($stack,$value);
}
$stack = array_values($stack);

print_r($stack);

$comma_separated = implode(",", $stack);

echo "\n\n" . $comma_separated . "\n\n";

当我单击localhost上的提交按钮时,它显示数组到字符串转换的错误,因为它是一个多维数组。如何在不诉诸递归函数的情况下摆脱第一个空键?我现在已经将它上传到我的主机帐户但我没有看到错误,但是它不打印以逗号分隔的列表,因为它是一个带有null键的多维数组。

3 个答案:

答案 0 :(得分:0)

抱歉,我感到很困惑,如果我明白了,请告诉我。 您收到错误,因为它是一个多维数组。

试试这个

foreach ($_REQUEST as $tempArray) {
          foreach ($tempArray as $key => $value) {
            array_push($stack,$value);
          }
}

$tempArray = $_REQUEST;
foreach ($tempArray[0] as $key => $value) {
         array_push($stack,$value);
}

答案 1 :(得分:0)

您可以使用array_filter()删除空值

$new_array_without_nulls = array_filter($array_with_nulls, 'strlen');

并将array_reduce()转换为逗号分隔而不是implode     http://php.net/manual/en/function.array-reduce.php

答案 2 :(得分:0)

您发送到php脚本的数据是{data: selectedBoxes},并且您正在使用post方法。 selectBoxes是一个数组,其中包含拖动到右侧框中的内容。

要在php中获取数据,只需迭代data post变量:

foreach ($_POST['data'] as $key => $value)
{
  // get all meals that were dragged
}

另请注意,如果你拖动框中的其中一个东西,你会得到同一餐的多个版本。