首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到最深数组子元素

问添加到最深数组子元素
EN

Stack Overflow用户
提问于 2015-08-16 22:49:13
回答 2查看 750关注 0票数 1

如何从多维数组中选择最深的子元素,以便在php中向该特定元素添加另一个元素(始终知道它是在哪里添加的,因此,如果需要来自父级的额外信息来创建新的子元素)?

例如:有这样一个数组,我想要能够添加另一个aaa,bbbb,cccc到每一个:aaa,bbb,ccc?然后是aaaaa,bbbbb,…对于每个aaaa,bbbb…依此类推(每个新元素都知道它的父元素的名称)。

代码语言:javascript
复制
array(
"a"=> array(
    "aa"=> array(
       "aaa",
       "bbb",
       "ccc"
       ),
    "bb"=> array(
       "aaa",
       "bbb",
       "ccc"
       ),
    "aa"=> array(
       "aaa",
       "bbb",
       "ccc"
       ),
    ),
"b"=> array(
    "aa"=> array(
       "aaa",
       "bbb",
       "ccc"
       ),
    "bb"=> array(
       "aaa",
       "bbb",
       "ccc"
       ),
    "aa"=> array(
       "aaa",
       "bbb",
       "ccc"
       ),
    ),
"c"=> array(
    "aa"=> array(
       "aaa",
       "bbb",
       "ccc"
       ),
       […]
    ),
);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-16 23:17:26

您可能需要使用array_walk_recursive。它允许您在多维数组的所有叶子上进行测试。

代码语言:javascript
复制
function add_children(&$item, $key)
{
    //Here you can change item to something else (since we use &)
    $item = array('aaaa', 'bbbb', 'cccc');
}

array_walk_recursive($array, 'add_children');

免责声明:我还没有测试过这个代码。

票数 2
EN

Stack Overflow用户

发布于 2015-08-16 23:23:16

您可以对此使用递归。我不确定您的示例是否表示了实际数据的外观,但在这种情况下,最深的元素不是数组,因此您可以这样做:

代码语言:javascript
复制
<?php
$testArray = array(
  'a' => array(
    'aa' => array(
      'aaa',
      'bbb'
    )
  )
);

print_r(modifyArray($testArray));

function modifyArray($array)
{
  foreach ($array as $key => $value) {
    if (is_array($value)) {
      $array[$key] = modifyArray($value);
    } else {
      $array[$value] = $value . substr($value, 0, 1);
      unset($array[$key]);
    }
  }

  return $array;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32040686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档