function virtual_array($r, $o) { $ret = array(); foreach ($r as $k => $v) { $do[$v[$o]][] = $v[0]; } foreach ($do as $k => $v) { $rb = explode('/', $k); $n = count($rb) - 1; $n = $o == 0 ? $n - 1 : $n; $rc = $v; for ($i = $n; $i >= 0; $i--) { $rd = $rc; $rc = ''; $rc[$rb[$i]] = $rd; } $ret = array_add_r($ret, $rc); } return $ret; }
function array_add_r($ra, $rb) { foreach ($rb as $k => $v) { if (is_array($v)) { $ra[$k] = array_add_r($ra[$k], $v); } else { $ra[] = $v; } } return $ra; }