<?php
$data = array(
135 => array(
150 => array(
151 => array(
1 => array(),
153 => array(),
),
1 => array(
1 => array(),
2 => array(),
),
),
1 => array(
1 => array(
1 => array(),
2 => array(),
),
2 => array(
1 => array(),
2 => array(),
),
),
),
);
/**
* traverse array and
* add parent key to children key
*
* @param array $a (return)
* @param int $p (optional) parent key
*/
function changeKeys(array &$a, $p = null)
{
static $f = __FUNCTION__;
foreach($a as $k => &$v)
{
# test if already processed
if (is_string($k))
return;
# traverse children if children exists
if ($v)
$f($v, $k);
# rename key if parent exists
if ($p)
{
$a["$k|$p"] = &$v;
unset($a[$k]);
}
}
}
changeKeys($data);
print_r($data);