将数组索引数组转换为动态大小

时间:2016-03-24 18:03:28

标签: php arrays multidimensional-array indices

我有一个数组如下:

test[
0 => 0,
1 => 2 ,
2 => 0,
3 => 2
]

上面的数组值是一个较大数组索引的表示,所以我需要将值转换为另一个数组的索引,这个数组将映射较大的数组,如下所示:

test2[0][2][0][2]

我试过了:

$test3= array_flip ( $test ) 

工作正常但是不方便碰撞,因为我没有控制阵列,任何帮助?

2 个答案:

答案 0 :(得分:1)

function arrayToIndex($array,$index) {
        $element = $array;
            for ($i = 0; $i < count($index); $i++) {
                    $element = $element[$index[$i]];
            }
            return $element;
    }
$test = [[[[1],[2]],[[3],[4]]],[[[5],[6]],[[7],[8]]]];
$index = [0,1,0,0];
echo arrayToIndex($test,$index);

这是一个实现您要求的行为的函数。 $array是要搜索的数组,$index是索引数组。我建议您使用此示例,并查看每个值的检索方式。

实例:http://ideone.com/fork/BzCjcK

答案 1 :(得分:0)

所以在我提出以下功能后,我的目的是:

$mainarray = [

0 => [
   0 =>[
      0 => [
         0 => 'one' ,
         1 => 'two' ,
         2 => 'three' ,
         3 => 'four'
      ],

      1 => [
         0 => 'one' ,
         1 => 'two' ,
         2 => 'three' ,
         3 => 'four'
      ]


   ]
]

]

然后,下面的这个数组的值为$mainarray的索引,高于我想要的内容,如上所述one

$arraywithseacrhindex = [
0 => 0 , 
1 => 0 ,
2 => 0 ,
3 => 0 ,
]

解决方案:

$array = $mainarray ;
$arr = $arraywithseacrhindex ;
$counter= count($arr)-1 ;
$result = array() ;
for($i=0; $i< $counter; $i++) {

    if(empty( $result ) )
    {
        // first loop to put $result at per with $array
        $result[$arr[$i]] = $array[$arr[$i]]  ; 
    }else{
            // this is the trick of the solution
            $cResult = current($result);
            unset($result);
            $result = array() ;
            $result[$arr[$i]] = $cResult[$arr[$i]]  ; 




    }

}

var_dump($result);

希望将来帮助某人。