我怎样才能打破多维数组?

时间:2012-02-09 07:36:15

标签: php multidimensional-array break

我有一个多维数组,想要打破它...这是数组。

array
(
    [0] => array
    (
        [0] => array
        (
            [0] => 1
            [intsch_id] => 1
        )
        [1] => array
        (
            [0] => 2
            [intsch_id] => 2
        )
    )
)

我想把它分解为

array (
    [0] => 1
    [intsch_id] => 1,
    [1] => 2
    [intsch_id] => 2
)

这是一个动态查询,因此结果并不总是这么简单。它将具有与上述多维数组相同的结构。

3 个答案:

答案 0 :(得分:0)

此函数将展平您的数组结构:

function flatten_array($arr) {
  if (!is_array($arr)) return false;
  $ret = array();
  foreach ($arr as $key => $val) {
    if (is_array($val)) {
      $ret = array_merge($ret, flatten_array($val));
    } else {
      $ret[$key] = $value;
    }
  }
  return $ret;
}

答案 1 :(得分:0)

结果数组是否缺少两个逗号? 每个[intsch_id]键前一个?
像这样:

array ( [0] => 1, [intsch_id] => 1, [1] => 2, [intsch_id] => 2)

如果是这样,就不可能有多个具有相同键的数组值,[intsch_id]。

但是,您只想折叠保存此数据的外部数组,这非常简单:

$source_array = array(
    array(
        array(
            "0" => 1,
            "intsch_id" => 1
        ),
        array(
            "0" => 2,
            "intsch_id" => 2
        )
    )
);
echo '<pre>'; print_r($source_array); echo '</pre>';
$return_array = $source_array[0];
echo '<pre>'; print_r($return_array); echo '</pre>';

答案 2 :(得分:0)

我认为这是最快的方式:

function array_flat(&$ar) {
    function flat($item, $key, $res)
    {
        $res[$key] = $item;
    }
    $res = array();
    array_walk_recursive($ar, 'flat', &$res);
    return $res;
}

$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');

print_r(array_flat($fruits));