gpt4 book ai didi

PHP 数组到树

转载 作者:行者123 更新时间:2023-11-30 00:48:59 25 4
gpt4 key购买 nike

我有一个包含如下值的数组:

array (
array(a, a, a),
array(a, a, b),
array(a, b, a),
array(b, c, d)
)

我想将此数组转换为具有关联数组的树,如下所示:

array (
a => array (
a => array(a, b),
b => array(a)
),
b => array (
c => array(d)
)
)

我花了几个小时试图解决这个问题。有谁知道这个问题的解决方案?第一个数组的值来自mysql数据库,并且它们是有序的。

最佳答案

只有两个级别:

 $a = array (
array(a, a, a),
array(a, a, b),
array(a, b, a),
array(b, c, d)
);

$out = array();
foreach ($a as $row) {
$out[$row[0]][$row[1]][] = $row[2];
}
echo '<pre>';
print_r($out);

//http://phpfiddle.org/main/code/tcb-fwz

编辑:根据数组长度使用最大深度:

$input = array(
array('a', 'a', 'a', 'z'),
array('a', 'a', 'c', 'z'),
array('a', 'a', 'a', 'y'),
);

$result = array();

foreach ($input as $row) {

for ($i = count($row)-1; $i >=0; $i--) {
if (!isset($work)) {
$work = array($row[$i]); //last item
}else{
$work = array($row[$i]=>$work);
}
}

$result = array_merge_recursive($result, $work);
unset($work);
}
echo '<pre>';
print_r($result);

//位于http://phpfiddle.org/main/code/1ag-4cj

如果$input数组元素是不同长度的数组,就会出现问题。

关于PHP 数组到树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com