【问题标题】:PHP recurrsive function to add new element to each level of an multidimensional arrayPHP递归函数向多维数组的每一级添加新元素
【发布时间】:2009-11-24 22:43:00
【问题描述】:

如何可能,使用 PHP 为多维数组的每个“级别”添加新索引?

例如,对于以下数组:

$array = array(
    'a' => 'a val',
    'b' => array(
        'ba' => 'ba value',
        'bb' => array(
            'bba' => 'bba value'
        ),
        'bc' => 'bc value'
    ),
    'c' => 'c val',
    'd' => 'd val'
);

... 会变成:

$array = array(
    'a' => 'a val',
    'b' => array(
        'ba' => 'ba value',
        'bb' => array(
            'bba' => 'bba value',
            'new index' => 'new index value'
        ),
        'bc' => 'bc value',
        'new index' => 'new index value'
    ),
    'c' => 'c val',
    'd' => 'd val',
    'new index' => 'new index value'
);

提前致谢,
标题

【问题讨论】:

  • 如果单层有多个子数组会怎样?
  • @intgr - 好吧.. 只将新索引添加到第一级

标签: php recursion multidimensional-array


【解决方案1】:

来自 phpdeveloper 的更正函数

function addIndex($arr){
  if(!is_array($arr)){ return; }
  foreach($arr as &$a){
    if(is_array($a)){
      $a = addIndex($a);
    }
  }
  $arr['new index'] = 'new index value';
  return $arr;
}

【讨论】:

    【解决方案2】:
    function addIndex($arr){
      if(!is_array($arr)){ return; }
      foreach($arr as &$a){
        if(is_array($a)){
          $a = addIndex($a);
        }
      }
      $arr['new index'] = 'new index value';
      return $arr;
    }
    

    【讨论】:

    • 您需要通过引用传递,否则我认为将 addIndex 的结果分配回 $arr?
    • 您提出的功能只是将新索引添加到数组的第一级,而不是另一个:(
    • 我忘记了一个并通过引用传递
    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2012-01-16
    相关资源
    最近更新 更多