我有一个大的多维数组。我必须从中找到特定的子数组。
我尝试使用一个递归函数,但它实际上不返回值。谁能给我另一个解决办法?这是array的预览。
Array
(
[0] => Array
(
[expanded] => 1
[key] => _1
[title] => New
)
[1] => Array
(
[key] => _2
[title] => Home
)
[2] => Array
(
[expanded] => 1
[key] => _3
[title] => Care
[children] => Array
(
[0] => Array
(
[expanded] => 1
[key] => _4
[title] => face
[children] => Array
(
[0] => Array
(
[key] => _5
[title] => new
)
[1] => Array
(
[key] => _6
[title] => <strong>face timeline</strong>
[data] => Array
(
[url] => http://localhost/patient/face-timeline/
[type] => content
[cid] => 2291
[timeline] => 0
)
[children] => Array
(
[0] => Array
(
[key] => _2278
[title] => Post Op Visit
)
[1] => Array
(
[key] => _2277
[title] => Surgery
)
[2] => Array
(
[key] => _2276
[title] => Pre-Op
)
[3] => Array
(
[key] => _2275
[title] => Consultation
)
[4] => Array
(
[key] => _2274
[title] => Reseach
)
)
)
)
)
)
)
)
从这个数组我想要这个数组(下面):
Array
(
[key] => _6
[title] => <strong>face timeline</strong>
[data] => Array
(
[url] => http://localhost/patient/face-timeline/
[type] => content
[cid] => 2291
[timeline] => 0
)
[children] => Array
(
[0] => Array
(
[key] => _2278
[title] => Post Op Visit
)
[1] => Array
(
[key] => _2277
[title] => Surgery
)
[2] => Array
(
[key] => _2276
[title] => Pre-Op
)
[3] => Array
(
[key] => _2275
[title] => Consultation
)
[4] => Array
(
[key] => _2274
[title] => Reseach
)
)
)
这是我尝试过的
function recursion($array,$postid) {
foreach ($array as $key=>$value) {
if((isset($value['data']['cid'])) && ($value['data']['cid'] == $postid)){
$tmp = $value;
return $value;
}
if (is_array($value))
{
recursion($value,$postid);
}
}
}
这个函数没有返回值。
这里$postid
是2291
。这是我正在搜索,我能够打印该数组,但不能返回值这里是链接
如果您只想获得一个特定的值,请使用:
function recursive($your_array)
{
$newArray = [];
foreach ($your_array as $key => $val) {
if (array_keys($your_array) == 'children') {
foreach($val as $key2 => $val3){
$newArray[] = recursive($val3);
}
}
}
print_r($newArray);
}
这将给出您的结果:
$searchedData = searchCustomRecursive('2291',$userdb);
function searchCustomRecursive($searchString, $array, $previousArray= Array()){
if(is_Array($array)){
$newArray = recursive_array_search($searchString,$array);
if(is_Array($newArray)){
searchCustomRecursive($searchString, $newArray,$array);
}else{
print_r($previousArray); // Check your result here...
return $previousArray;
}
}
}
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $value;
}
}
return false;
}