从多维数组中删除前3个级别

时间:2018-06-18 09:43:20

标签: php arrays multidimensional-array

我试图从我的多维数组中删除前3个级别,是否有一种“更清晰”的方式来执行以下代码?

$array = array_shift(array_shift(array_shift($this->fullArray())));

这是数组

 array(1) { 
    ["GetAllJobByLanguageResult"]=> array(1) { 
      ["Results"]=> array(1) { 
        ["AvJobSearch"]=> array(2) { 
           [0]=> array(21) { 
             ["Id"]=> int(103689) 
             ["Title"]=> string(13) "Test Vacature" 
             ["PublishDate"]=> string(23) "2018-06-08T14:11:05.237"

2 个答案:

答案 0 :(得分:1)

您可以循环删除要删除的级别数。

我使用array_keys查找键并用$ arr覆盖$ arr更深一层 然后重复执行for循环中指定的次数。

$arr = [["second" => ["something" => ["else" => [1,2,3]]]]];

For($i=0;$i<3;$i++){
    $keys = array_keys($arr);
    $arr = $arr[$keys[0]];
}

Var_dump($arr);

https://3v4l.org/WiOrI

如果您知道确切的路径,那么您可以跳过循环并写下:

$arr = $arr[0]["second"]["something"];

但如果您不确定键是什么,那么循环很有用。

答案 1 :(得分:0)

您使用静态方法删除数组元素,array_shift不是用于删除元素

试试这个

<?php

$a = array("a"=>"red","b"=>"green","c"=>"blue");


$i=1;
foreach($a as $key=>$value){
    if($i < 3){
        unset($a[$key]);
    }
    $i++;
}

print_r($a);