我对看似微不足道的问题感到非常难过。
我有这个功能:
function findCategoryNameInTree($id, $tree) {
foreach($tree as $branch) {
if ($branch['category_id'] == $id) {
echo $branch['name'];//works
print_r($branch['name']);//works
//return($branch['name']); //returns nothing
return $branch['name'];//fix this line per feedback still no return value
} else {
if(count($branch['children']) > 0) {
findCategoryNameInTree($id,$branch['children']);
}
}
}
}
我无法弄清楚为什么它没有返回任何东西。
请帮忙!
修改 以下是我调用函数的方法
//what I really want to do
$primgenre = findCategoryNameInTree($cat_id,$category_tree['children']);
//but this doesnt work either
echo $primgenre;
//nor this
print_r($pringenre);
答案 0 :(得分:1)
here明确提到
返回数组时,应该在数组之前声明数组 返回,否则结果不如您所期望的那样;
另见注意
你应该永远不要在返回变量周围使用括号 通过引用返回,因为这不起作用。你只能回来 变量通过引用而不是语句的结果。
foreach($tree as $branch) { }
此处$branch
只是$tree
的数组的内部指针(假设为参考)。
答案 1 :(得分:1)
你忘了回来: -
findCategoryNameInTree($id,$branch['children']);
更改: -
return findCategoryNameInTree($id,$branch['children']);
答案 2 :(得分:0)
只需删除圆括号,然后就可以了!?
return $branch['name'];
感谢减号;)
如果您的功能与您说的那样有效,请致电
$test = findCategoryNameInTree(XY, "bla");
echo $test;
应该输出一些东西。
答案 3 :(得分:0)
试试这个:
function findCategoryNameInTree($id, $tree) {
foreach($tree as $branch) {
if ($branch['category_id'] == $id) {
x = $branch['name'];
} else {
if(count($branch['children']) > 0) {
findCategoryNameInTree($id,$branch['children']);
}
}
}
return x;
}
答案 4 :(得分:0)
这对我有用,也是$ my_result方式!
<?php
$tree = ARRAY();
$tree[0] = ARRAY('category_id'=>10, 'name'=>'ten', 'children'=>'');
$tree[1] = ARRAY('category_id'=>11, 'name'=>'eleven', 'children'=>'');
$tree[2] = ARRAY('category_id'=>12, 'name'=>'twelve', 'children'=>'');
function findCategoryNameInTree($id, $tree) {
//$my_result = 'none';
foreach($tree as $branch) {
if ($branch['category_id'] === $id) {
//echo $branch['name'];//works
//print_r($branch['name']);//works
//$my_result = $branch['name'];
//break;
return $branch['name']; //returns nothing
}
//else {
// if(count($branch['children']) > 0) {
// findCategoryNameInTree($id,$branch['children']);
// }
//}
}
//return $my_result;
}
echo findCategoryNameInTree(10, $tree).'<br />';
echo findCategoryNameInTree(11, $tree).'<br />';
echo findCategoryNameInTree(12, $tree).'<br />';
?>
答案 5 :(得分:0)
尝试这种方式:
$primgenre = findCategoryNameInTree($cat_id,$category_tree);
$ branch是(应该是)一个数组,所以$ tree是(应该是)。如果$ tree数组包含格式良好的$ branch数组,一切都应该正常。用我的示例$ tree array查看我的其他解决方案。