根据父值和子值从另一个数组填充php数组

时间:2014-09-12 09:34:47

标签: php arrays

我有一个有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

     )
  )

请给我一个动态函数来执行此操作。

谢谢。

2 个答案:

答案 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中做到这一点,以提高编码的舒适度。