Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多维数组,删除任何子数组,只保留两个顶级数据_Php_Multidimensional Array_Filtering_Remove - Fatal编程技术网

Php 多维数组,删除任何子数组,只保留两个顶级数据

Php 多维数组,删除任何子数组,只保留两个顶级数据,php,multidimensional-array,filtering,remove,Php,Multidimensional Array,Filtering,Remove,我需要修改一个带有子数组的数组,只保留前两个数组(数组->结果-x),并删除下面的任何子数组。例如,应删除数组“location”和“syncState” 原始阵列: $device_array = [ "totalCount" => "3", "results" => [ [ "id" => "2",

我需要修改一个带有子数组的数组,只保留前两个数组(数组->结果-x),并删除下面的任何子数组。例如,应删除数组“location”和“syncState”

原始阵列:

$device_array = [
    "totalCount" => "3",
    "results" => [
        [
            "id" => "2",
            "serialNumber" => "DX",
            "location" => ["id" => "5", "locationName" => "US"]
        ],
        [
            "id" => "4",
            "serialNumber" => "DM",
            "syncState" => ["id" => "7", "locationName" => "DE"]
        ],
        [
            "id" => "5",
            "serialNumber" => "C0"
        ]
    ]
];
阵列应如下所示:

Array
(
    [totalCount] => 3
    [results] => Array
        (
            [0] => Array
                (
                    [id] => 2
                    [serialNumber] => DX
                )
            [1] => Array
                (
                    [id] => 4
                    [serialNumber] => DM
                )
            [2] => Array
                (
                    [id] => 5
                    [serialNumber] => C0
                )
        )
)
我试图循环遍历数组(包括子数组),但无法删除$device_array['results'][x]下的所有子数组

foreach ($device_array as $key => $value) {
    if(is_array($value)) {
            unset($device_array['results'][0]['location']);
    }
}

这是您获得输出的方式,但我不确定这是否是您案例中需要的

<?php
 $array = [
'total' => 2,                 
'result' => [
        [
            'id' => 1,
            'serialNumber' => 'DX',
            'location' => ['id'=>1, 'locationName'=>'US']
            
        ],
        [
            'id' => 2 ,
            'serialNumber' => 'DO',
            'syncState' => ['id'=>7, 'locationName'=>'DE']
            
        ]
    ]
];
      foreach( $array['result'] as $key => $value ){
        foreach($value as $key2=>$subarray){
           if(is_array($subarray)){
             unset($value[$key2]);
           }
         }
        $array['result'][$key] = $value;
      }

      print_r($array);

这是您获得输出的方式,但我不确定这是否是您的案例所需要的

<?php
 $array = [
'total' => 2,                 
'result' => [
        [
            'id' => 1,
            'serialNumber' => 'DX',
            'location' => ['id'=>1, 'locationName'=>'US']
            
        ],
        [
            'id' => 2 ,
            'serialNumber' => 'DO',
            'syncState' => ['id'=>7, 'locationName'=>'DE']
            
        ]
    ]
];
      foreach( $array['result'] as $key => $value ){
        foreach($value as $key2=>$subarray){
           if(is_array($subarray)){
             unset($value[$key2]);
           }
         }
        $array['result'][$key] = $value;
      }

      print_r($array);

您可以直接循环
结果
子数组,并编写一个自定义过滤器,该过滤器将通过引用修改每个条目。保存数组类型数据的任何关联元素都将被过滤掉

代码:()

输出:

array (
  'totalCount' => '3',
  'results' => 
  array (
    0 => 
    array (
      'id' => '2',
      'serialNumber' => 'DX',
    ),
    1 => 
    array (
      'id' => '4',
      'serialNumber' => 'DM',
    ),
    2 => 
    array (
      'id' => '5',
      'serialNumber' => 'C0',
    ),
  ),
)

或完全实用的样式:()


您可以直接循环
结果
子数组,并编写一个自定义过滤器,该过滤器将通过引用修改每个条目。保存数组类型数据的任何关联元素都将被过滤掉

代码:()

输出:

array (
  'totalCount' => '3',
  'results' => 
  array (
    0 => 
    array (
      'id' => '2',
      'serialNumber' => 'DX',
    ),
    1 => 
    array (
      'id' => '4',
      'serialNumber' => 'DM',
    ),
    2 => 
    array (
      'id' => '5',
      'serialNumber' => 'C0',
    ),
  ),
)

或完全实用的样式:()


你好,Alexandru,你创作的数组与我发布的数组有点不同。应该是$array[results][0][location]在您的示例中,在“results”和我要删除的“location”之间缺少子数组。嗨,Alexandru,您创建的数组与我发布的数组有点不同。应该是$array[results][0][location]在您的示例中,在“results”和我想删除的“location”之间缺少一个子数组。这看起来是学习TDD的完美练习。请分享更多关于你尝试的细节。这看起来是学习TDD的完美练习。请分享有关您尝试的更多详细信息