Php 获取多数组中的最后一个子数组
我需要一些帮助,我有多个数组类别,我需要得到每个数组中的最后一个子数组Php 获取多数组中的最后一个子数组,php,arrays,Php,Arrays,我需要一些帮助,我有多个数组类别,我需要得到每个数组中的最后一个子数组 0=>array( "categoryName"=>"category1", "categorySlug"=>"categorys1", "categoryNested"=>array( 0=>array( "categoryName"=>"category2", "categorySlug"=>"cate
0=>array(
"categoryName"=>"category1",
"categorySlug"=>"categorys1",
"categoryNested"=>array(
0=>array(
"categoryName"=>"category2",
"categorySlug"=>"categorys2",
"categoryNested"=>array(
0=>array(
"categoryName"=>"category3",
"categorySlug"=>"categorys3",
)
)
)
),
1=>array(
"categoryName"=>"category4",
"categorySlug"=>"categorys4",
"categoryNested"=>array()
),
示例:
需要获取category3(categoryName),category4(categoryName),数组是多维的您可以尝试这个
<?php
$a = array(0=>array(
"categoryName"=>"category1",
"categorySlug"=>"categorys1",
"categoryNested"=>array(
"categoryName"=>"category2",
"categorySlug"=>"categorys2",
"categoryNested"=>array(
"categoryName"=>"category3",
"categorySlug"=>"categorys3",
)
)
),
1=>array(
"categoryName"=>"category4",
"categorySlug"=>"categorys4",
"categoryNested"=>array()
));
$cats = array();
foreach ($a as $cat){
while (isset($cat["categoryNested"]) && count($cat["categoryNested"])){
$cat = $cat["categoryNested"];
}
$cats[] = $cat["categoryName"];
}
print_r($cats);
另一个选项,使用匿名函数:
$lastElements = array();
$findLastElements = function ($array) use (&$lastElements, &$findLastElements) { //create anonymous function
foreach($array as $key => $value) { //loop trough the array
if (isset($value['categoryNested']) && !empty($value['categoryNested'])) {
call_user_func($findLastElements, $value);
} elseif(isset($value['categoryName'])) {
array_push($lastElements, $value['categoryName']);
}
}
};
$findLastElements($array); //call the function
print_r($lastElements); //print the result
那么只有categoryName及其值?最后有多少子级?是的,只有categoryName获得有限子级,请参见示例您能给我们展示预期结果吗?然后我会修改我的答案:“+需要考虑索引,你的解决方案很有趣,但是我怎么能用OOP来应用它呢?为什么你不在里面创建一个带有这个匿名函数的公共函数呢?或者是一个静态的函数来回忆它自己?乔,聊天怎么样?”