php array_walk多维数组

use*_*875 5 php hierarchy multidimensional-array

我得到了带有某种分层预定义术语的三个数组

array("fruits", "yellow", "pineapple");
array("fruits", "yellow", "lemon");
array("fruits", "red", "apple");
Run Code Online (Sandbox Code Playgroud)

我有一个asoc数组,它具有一种层次结构:

array('fruits'=>array('red'=>array('tomato')));
Run Code Online (Sandbox Code Playgroud)

如何将三个数组的条件推到正确的位置:

array('fruits'=>array('yellow'=>array('pineapple','lemon'),'red'=>array('tomato','apple')));
Run Code Online (Sandbox Code Playgroud)

我是否使用array_walk?还是array_walk_recursive?我应该使用什么?

最好,Joerg

Gus*_*ram 5

您将每个水果转换为嵌套数组,然后使用array_merge_recursive()进行合并。

这是一个工作示例(也在 Codepad 上):

$fruits = array(
  array("fruits", "yellow", "pineapple"),
  array("fruits", "yellow", "lemon"),
  array("fruits", "red", "apple"),
  array("fruits", "red", "tomato"),
);

// Convert array to nested array
function nest($leaf)
{
  if (count($leaf) > 1)
  {
    $key = array_shift($leaf);

    return array($key => nest($leaf));
  }
  else
  {
    return $leaf;
  }
}

$tree = array();

foreach($fruits as $fruit)
{
  // Convert each fruit to a nested array and merge recursively
  $tree = array_merge_recursive($tree, nest($fruit));
}

print_r($tree);
Run Code Online (Sandbox Code Playgroud)