函数只返回1个数组结果

时间:2015-09-05 15:32:28

标签: php

我'我正在尝试这个很长一段时间了。下面的函数只返回1个结果,因为它应返回3个结果。

我已经检查了数据库,数据库返回的结果很好,这意味着数据库部分没问题,它在函数中某处做错了。

//function that generates the URI from the database
function generate_uri( $menu_id = 0, $array = '' ){
    global $db;
    $array = array();
    if( !empty($menu_id) ){
        $db->where('menu_id', $menu_id);
        $menu = $db->ObjectBuilder()->getOne('menu');
        $menu_parent = $menu->menu_parent;
        $menu_slug = $menu->menu_slug;
        $array[] = $menu_slug;
        generate_uri($menu_parent, $array);
    }
    return $array;
}

//Calling the function with a parameter of 3
var_dump(generate_uri(3));

输出

array(1) { [0]=> string(15) "photo-gallery-1" }

应该返回

 array(1) { [0]=> string(15) "photo-gallery-1" [1]=> string(12) "photo-gallery" [2]=> string(9) "resources"}

2 个答案:

答案 0 :(得分:2)

您在每次递归调用时都会重新声明$array,因此每次重新初始化都会重新初始化。尝试在调用generate_uri()之前声明它并将其作为第二个参数传递:

$array = array();
var_dump(generate_uri(3, $array));

不要忘记将其从函数内部删除。

答案 1 :(得分:1)

每次调用该函数时,都将$array设置为空:     $array = array(); 另一个问题是你没有在if语句中返回函数。改变这一行:

generate_uri($menu_parent, $array);

对此:

$array = generate_uri($menu_parent, $array);

所以,函数应该是这样的:

function generate_uri($menu_id = 0, $array = '') {
  global $db;

  if (!empty($menu_id)) {
    $db->where('menu_id', $menu_id);
    $menu = $db->ObjectBuilder()->getOne('menu');
    $menu_parent = $menu->menu_parent;
    $menu_slug = $menu->menu_slug;
    $array[] = $menu_slug;
    $array = generate_uri($menu_parent, $array);
  }

  return $array;
}