I am looking for a solution in php
as mentioned in the accepted answer of this question:
javascript - return parent with only child that matches given s
Try this code.
function getParentStackComplete( $search, $stack ){
$results = array();
foreach( $stack as $item ){
if( is_array( $item ) ){
if( array_filter($item, function($var) use ($search) { return ( !is_array( $var ) )? stristr( $var, $search ): false; } ) ){
//echo 'test';
$results[] = $item;
continue;
}else if( array_key_exists('asset_info', $item) ){
$find_assets = array();
foreach( $item['asset_info'] as $k=>$v ){
//echo 'abc ';
if( is_array( $v ) && array_filter($v, function($var) use ($search) { return stristr($var, $search); }) ){
$find_assets[] = $v;
}
}
if( count( $find_assets ) ){
$temp = $item;
$temp['asset_info'] = $find_assets;
$results[] = $temp;
}
}
}
}
return $results;
}