使用单词作为终止于空数组的路径键,将空格分隔单词的平面数组转换为多维关联数组

问题描述 投票:0回答:2

我正在尝试对以下数组进行排序。

数组

$fruits = array( 'mango', 'mango red', 'mango yellow', 'orange', 'banana', 'apple', 'apple red', 'apple green', );

我做了什么:

$data = array_flip( $fruits ); // flip array $data = array_fill_keys( array_keys( array_flip( $data ) ), 'array(),' ); // fill array value: "array()," print_r( $data );

我想要这个结果:

$fruits = array( 'mango' => array( 'red' => array(), 'yellow' => array(), ), 'orange' => array(), 'banana' => array(), 'apple' => array( 'red' => array(), 'green' => array(), ), );
有人知道怎么做吗?

php arrays multidimensional-array grouping hierarchical-data
2个回答
1
投票
循环数组,并分割字符串。然后递归创建嵌套数组。

$result = array(); foreach ($fruits as $f) { $f_array = explode(' ', $f); $start = &$result; foreach ($f_array as $word) { if (!isset($start[$word])) { $start[$word] = array(); } $start = &$start[$word]; } } var_dump($result);

演示


1
投票
使用以下方法(针对您当前的阵列):

$result = []; foreach ($fruits as $fruit) { $parts = explode(' ', $fruit); if (count($parts) == 1) { $result[$fruit] = []; } elseif (isset($result[$parts[0]])) { $result[$parts[0]][$parts[1]] = []; } } print_r($result);
    
© www.soinside.com 2019 - 2024. All rights reserved.