我有一个有3级
的数组Array
(
[BIOCHEMISTRY] => Array
(
[BloodRoutine] => Array
(
[DifferentialCount] => Array
(
[itemId] => 552
[catId] => 2
[testId] => 1
[parent] => 0
[title] => FBS
[unit] => mg%
[amount] => 20
[catName] => BIOCHEMISTRY
)
[ESR]=>2
[PPR]=>4
)
[PCV]=>3
)
)
如果 testId 具有值
,我需要填充数组 Array
(
[BIOCHEMISTRY] => Array
(
[BloodRoutine] => Array
(
[DifferentialCount] => Array
(
[itemId] => 552
[catId] => 2
[testId] => 1
[parent] => 0
[title] => FBS
[unit] => mg%
[amount] => 20
[catName] => BIOCHEMISTRY
)
)
)
)
如果 ESR 具有值,则需要填充数组, DifferentialCount
的任何子项都没有值Array
(
[BIOCHEMISTRY] => Array
(
[BloodRoutine] => Array
(
[ESR]=>2
)
)
)
如果 PCV 有值,我需要填充一个数组,对于 BloodRoutine
的任何一个孩子都没有价值Array
(
[BIOCHEMISTRY] => Array
(
[PCV]=>3
)
)
请给我一个动态函数来执行此操作。
谢谢。
答案 0 :(得分:1)
尝试
foreach($input as $key1=>$level1) {
if(is_array($level1)) {
foreach($level1 as $key2=>$level2) {
if(is_array($level2)) {
foreach($level2 as $key3=>$level3) {
if(is_array($level3)) {
foreach($level3 as $key4=>$level4) {
if(isset($level4)) {
$output[$key1][$key2][$key3][$key4]=$level4;
}
}
}
else {
if(isset($level3)) {
$output[$key1][$key2][$key3]=$level3;
}
}
}
}
else {
if(isset($level2)) {
$output[$key1][$key2]=$level2;
}
}
}
}
else {
if(isset($level1)) {
$output[$key1]=$level1;
}
}
}
echo '<pre>';print_r($output);echo '</pre>';
答案 1 :(得分:0)
使用foreach函数并遍历数组并在foreach检查中使用$ key 如果($键==&#39; testid&#39;) {//填充} 如果($ key ==&#39; ESR&#39;)并且同样聪明。你需要在单独的foreach中做到这一点,以提高编码的舒适度。