First, you are not showing a multidimensional array, but an array of StdClass objects.
If it’s good for you to make them truly arrays, this can do it:
$multiArray = array();
foreach( $items as $item )
{
$objToArray = (array) $item;
$multiArray[ $objToArray[ 'tid' ] ] = isset( $multiArray[ $objToArray[ 'tid' ] ] ) ? $multiArray[ $objToArray[ 'tid' ] ] + $objToArray : $objToArray;
foreach( $objToArray[ 'parents' ] as $parentId )
{
if( !isset( $multiArray[ $parentId ] ) )
{
$multiArray[ $parentId ] = array(
'children' => array()
);
}
$multiArray[ $parentId ][ 'children' ][ $objToArray[ 'tid' ] ] = &$multiArray[ $objToArray[ 'tid' ] ];
}
}
id :
$item = $multiArray[ $someId ];
:
$child = $item[ 'children' ][ $someChildId ];
:
$children = $item[ 'children' ];
, , , , .