Php 多维数组,删除任何子数组,只保留两个顶级数据
我需要修改一个带有子数组的数组,只保留前两个数组(数组->结果-x),并删除下面的任何子数组。例如,应删除数组“location”和“syncState” 原始阵列:Php 多维数组,删除任何子数组,只保留两个顶级数据,php,multidimensional-array,filtering,remove,Php,Multidimensional Array,Filtering,Remove,我需要修改一个带有子数组的数组,只保留前两个数组(数组->结果-x),并删除下面的任何子数组。例如,应删除数组“location”和“syncState” 原始阵列: $device_array = [ "totalCount" => "3", "results" => [ [ "id" => "2",
$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的完美练习。请分享有关您尝试的更多详细信息