<?php
$input = array(
array('id' => 2, 'name' => 'Clement', 'upper' => 0),
array('id' => 1, 'name' => 'Jean', 'upper' => 1),
array('id' => 1, 'name' => 'Annie', 'upper' => 1)
);
$map = array();
foreach ($input as $node) {
// init self
if (!array_key_exists($node['sn'], $map)) {
$map[$node['sn']] = array('self' => $node['name']);
}
else {
$map[$node['sn']]['self'] = $node['name'];
}
// init parent
if (!array_key_exists($node['upper'], $map)) {
$map[$node['upper']] = array();
}
// add to parent
$map[$node['upper']][$node['sn']] = & $map[$node['sn']];
}
print_r($map[0]);
preferences:
69.82 ms | 402 KiB | 5 Q