我有以下问题。我得到了这个数组结构:
Array
(
[1702] => Array
(
[unit] => Unit name
[info] => Array
(
[735100] => Array
(
[group] => Ac Fluorhidricos
)
[0] => Array
(
[group] => Other
[services] => Array
(
[731171] => [ARES70] Oil 01
[731172] => [ARES71] Oil 02
[731112] => [ARES11] Oil 03
)
)
[733496] => Array
(
[group] => Activity
)
[732216] => Array
(
[group] => Water SMA
)
[732280] => Array
(
[group] => Water MAR SMA
)
[732307] => Array
(
[group] => Blue water SMA
)
[732369] => Array
(
[group] => Residual water SMA
[services] => Array
(
[732373] => [ARESSMA05] Water 01
[732388] => [ARESSMA20] Water 02
[732374] => [ARESSMA06] Water 03
[732397] => [ARESSMA29] Water 04
[732375] => [ARESSMA07] Water 05
)
)
)
)
)
但是我需要删除数组中所有不包含“服务”的元素:
Array
(
[1702] => Array
(
[unit] => Unit name
[info] => Array
(
[0] => Array
(
[group] => Other
[services] => Array
(
[731171] => [ARES70] Oil 01
[731172] => [ARES71] Oil 02
[731112] => [ARES11] Oil 03
)
)
[732369] => Array
(
[group] => Residual water SMA
[services] => Array
(
[732373] => [ARESSMA05] Water 01
[732388] => [ARESSMA20] Water 02
[732374] => [ARESSMA06] Water 03
[732397] => [ARESSMA29] Water 04
[732375] => [ARESSMA07] Water 05
)
)
)
)
)
我一直在尝试使用 array_filter 函数,但没有得到我需要的结果。我将非常感谢您的帮助。
我希望有一些线索或功能可以帮助我解决问题。
您可以这样做,假设您的数组的结构始终像您发布的那样(第一级中的数字键,第二级中的
unit
和 info
,数组列表 潜在 具有 键services
在他们的第一级)。当然,有很多假设,但如果您知道这就是您将拥有的结构,那么它就会起作用。
<?php
$arr = [
1702 => [
"unit" => "Unit name",
"info" => [
735100 => [
"group" => "Ac Fluorhidricos",
],
0 => [
"group" => "Other",
"services" => [
"731171" => "[ARES70] Oil 01",
"731172" => "[ARES71] Oil 02",
"731112" => "[ARES11] Oil 03",
]
],
733496 => [
"group" => "Activity"
],
732216 => [
"group" => "Water SMA"
],
732280 => [
"group" => "Water MAR SMA"
],
732307 => [
"group" => "Blue water SMA"
],
732369 => [
"group" => "Residual water SMA",
"services" => [
732373 => "[ARESSMA05] Water 01",
732388 => "[ARESSMA20] Water 02",
732374 => "[ARESSMA06] Water 03",
732397 => "[ARESSMA29] Water 04",
732375 => "[ARESSMA07] Water 05"
]
]
]
]
];
$endArr = [];
foreach($arr as $key=>$value) {
// Just setting it out right
// We'll remove what we don't need
// once we come to it...
$endArr[$key] = $value;
$info = $value["info"];
foreach($info as $itemId=>$item) {
// ... right about here
if(!in_array("services",array_keys($item))) {
unset($endArr[$key]["info"][$itemId]);
}
}
// Optional - if there's nothing left within info, remove it
// Commented out, since you didn't specify whether you want that
// if(!$endArr[$key]["info"]) {
// unset($endArr[$key];
// }
}
print_r($endArr);
输出:
Array
(
[1702] => Array
(
[unit] => Unit name
[info] => Array
(
[0] => Array
(
[group] => Other
[services] => Array
(
[731171] => [ARES70] Oil 01
[731172] => [ARES71] Oil 02
[731112] => [ARES11] Oil 03
)
)
[732369] => Array
(
[group] => Residual water SMA
[services] => Array
(
[732373] => [ARESSMA05] Water 01
[732388] => [ARESSMA20] Water 02
[732374] => [ARESSMA06] Water 03
[732397] => [ARESSMA29] Water 04
[732375] => [ARESSMA07] Water 05
)
)
)
)
)
测试一下这里。