Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 添加到数组子元素_Php_Arrays - Fatal编程技术网

Php 添加到数组子元素

Php 添加到数组子元素,php,arrays,Php,Arrays,如何从多维数组中选择最深的子元素,以便在php中将另一个元素添加到该特定元素中(始终知道它添加的位置,以防需要父元素的附加信息来创建新的子元素) 有一个这样的数组,我想在每个数组中添加另一个aaaa,bbbb,cccc:aaa,bbb,ccc?然后是aaaaa,bbbbb,…到每个aaaa,bbbb…等等(每个新元素都知道它的父元素的名称) 您可能想使用。它允许您对多维数组的所有叶进行排序 function add_children(&$item, $key) { //Here

如何从多维数组中选择最深的子元素,以便在php中将另一个元素添加到该特定元素中(始终知道它添加的位置,以防需要父元素的附加信息来创建新的子元素)

有一个这样的数组,我想在每个数组中添加另一个aaaa,bbbb,cccc:aaa,bbb,ccc?然后是aaaaa,bbbbb,…到每个aaaa,bbbb…等等(每个新元素都知道它的父元素的名称)

您可能想使用。它允许您对多维数组的所有叶进行排序

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');

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

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

<?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;
}

真正的例子更容易理解(至少对我来说)array\u walk\u递归听起来非常适合这个。据我所知,它只访问叶节点。是否还有一种方法可以循环通过每个可能的路径,以防需要来自父节点的附加信息来创建新的子节点?您是正确的,因为它只访问叶节点。我理解你的问题,因为它是目前提出的,这应该是足够的,所以我不会编辑我的答案。如果您需要关于叶的“路径”的信息,您将需要切换方法并实现自己的递归。这个问题可能会提供一些指导。
<?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;
}