如何将没有父ID的平面数组转换为树对象? (PHP)

时间:2017-09-05 15:18:22

标签: php arrays tree

我有一个多维数组,如:

Grandfather's name | Father's name | Son's name
JOHN | RAY | TERRENCE
JOHN | TIM | MICHAEL
JOHN | TIM | RYAN
BILL | SAM | HANK
BILL | SAM | WILL
BILL | LEO | DONALD
JACK | ROD | FITZGERALD
JACK | ABE | GEORGE
JACK | ALI | HARRY

我想把它变成嵌套的JSON对象,比如

JOHN
    RAY
        TERRENCE
    TIM
        MICHAEL
        RYAN

等。

现在,我正在做一些循环检查,当祖父的名字改变时,然后当父亲的名字改变时。但这不是非常具有前瞻性,也不是可重复使用的。什么是更好(更可重用,更有效,更可读)的方式来做到这一点? (以可在PHP中实现的方式)

我意识到一些假设是有道理的。我正在寻找一种方法来实现这n个列,而不事先知道列数。但假设层次结构的排序顺序与列相同(因此每个后续列都是更深的集合)。

1 个答案:

答案 0 :(得分:1)

循环遍历行,您需要一行代码来生成数组。

$rows = array(array('A', 'B', 'C'), array('A', 'B', 'D'), array('A', 'X', 'Y'));
$data = array();

foreach ($rows as $row) {
    $data[$row[0]][$row[1]][$row[2]] = 1;
}

echo json_encode($data); // {"A":{"B":{"C":1,"D":1},"X":{"Y":1}}}