PHP 正在编辑深度未知的多维数组

PHP editing multi dimensional array with unknown depth

我有一个多维数组,可以有 N 层深。我想操纵最终数组(下面示例中的第 2 级)我们知道它是递归函数中的最终数组,当它找到键 'a'.

我想向这个数组添加一个新键,比如 'c' 并且 'c' 的值将使用 'a' 和 'b'[= 的值来计算13=]

我可以编写一个递归函数来循环数组,没问题,但不确定如何 return 一个新键 'c' 和数据到最终数组。

    Array
    (
    [level1] => Array
        (
            [level2_a] => Array
                (
                    [a] => 786578
                    [b] => 34450
                ),

            [level2_b] => Array
                (
                    [a] => 786578
                    [b] => 34450
                )


        )

    )

我已经尝试了以下但无法得到它 return 新数据,它只是 return 原始数组。

function calculateAverages(&$arr,$key) {

    if (is_array($arr) ) {       
        if (in_array('a',array_keys($arr))) {
            //add new data to this array    
        }else {
         foreach($arr as $key => $data) {
            calculateAverages($data,$key);
         }
      }
    }
   }

您即将实现您的目标,唯一需要做的更改就是将引用也传递给 foreach 循环。这里不需要密钥,所以我将其删除。试试这个:

    $arr =Array
    (
    'level1' => Array
        (
            'level2_a' => Array
                (
                    'a' => 786578,
                    'b' => 34450,
                ),

            'level2_b' => Array
                (
                    'a' => 786578,
                    'b' => 34450,
                )


        )

    );

     function calculateAverages(&$arr) {
       if (is_array($arr) ) {

          if (in_array('a',array_keys($arr))) {
                $avg = ((array_sum($arr))/2);
                $arr['c']=$avg;                     

          }
          else {
             foreach($arr as &$data) {
                calculateAverages($data);                
             }
          }
       }
    }
calculateAverages($arr);
print_r($arr);

示例:https://eval.in/737280