从现有阵列(多阵列)重现新阵列

时间:2010-12-16 10:02:32

标签: php

从现有阵列(多阵列)重现新阵列

如果我有一个名为参数的数组:

$arr =  Array
          (
          [0] => Array(0,Array(0=>'abc'))
          [1] => Array(0,Array(1=>'def'))
          [2] => Array(1,Array(0=>'ghi'))
    )

想要一个传递$ arr的函数,比如这个

function TODO($arr){
      //
      return $new_array;
 }

该功能将返回 结果将重现先前数组中的元素,并且将得到结果(返回):

Array
    (
       [0] => Array
           (
              [0] => 'abc'
              [1] => 'def'
            )

       [1] => Array
           (
               [0] => 'ghi'
            )

    )

有人知道怎么做吗?请

感谢

2 个答案:

答案 0 :(得分:1)

我不是百分百肯定我已经明白你想要什么,但如果我有,这应该有用:

<?php

$arr = Array(
    0 => Array(0, Array(0=>'abc')),
    1 => Array(0, Array(1=>'def')),
    2 => Array(1, Array(0=>'ghi'))
);


function transformArray($array) {
    $newArray = array();

    foreach ($array as $value) {
        if (!isset($newArray[$value[0]])) {
            $newArray[$value[0]] = array();
        }
        $newArray[$value[0]][] = array_pop($value[1]);
    }

    return $newArray;
}


$outputArray = transformArray($arr);
echo '<pre>' . print_r($outputArray, true) . '</pre>';

?>

答案 1 :(得分:0)

我不这么认为。如果您可以控制这些文本数组如何转换为文本,则应使用serialize()unserialize()。最快捷,最简单的方法。

如果你仍然需要从你提供的字符串创建数组,你可能需要构建一个非常复杂的函数来做到这一点。