【问题标题】:php function returns null instead of stringphp函数返回null而不是字符串
【发布时间】:2016-11-04 17:45:48
【问题描述】:

我有一个包含所有类别的数组:

$allCatArray = array(
                      ['departments/outdoor/123123/'] => stdClass Object
                          (
                              [i] => 1
                              [id] => 'departments/outdoor/123123/'
                              [pid] => 'departments/outdoor/'
                              [name] => 'Child Category Name'
                          )
                      ['departments/outdoor/'] => stdClass Object
                          (
                             [i] => 1
                             [id] => 'departments/outdoor/'
                             [pid] => '0'
                             [name] => 'Main Category Name'
                          )

当我在层次结构中具有较低类别的 id 时,我需要检测层次结构中的最高类别。所以我有这个功能:

function findMainCategoryFromAllCatArray($initial_category, $allCatArray) {
  $pid = trim($allCatArray[$initial_category]->pid);
  if($pid != "0") {
    findMainCategoryFromAllCatArray($pid, $allCatArray);
  }
  elseif($pid == "0") {
    var_dump($allCatArray[$initial_category]->name); // this var dump returns normal value
    return $allCatArray[$initial_category]->name;
  }
  else {
    return false;
  }
}

尝试使用此功能时遇到问题:

$category_name = findMainCategoryFromAllCatArray('departments/outdoor/123123/', $allCatArray);
var_dump($category_name); // returns NULL instead of "Main Category Name"

有什么想法吗?

【问题讨论】:

  • 你没有返回你从 findMainCategoryFromAllCatArray($pid, $allCatArray); 获得的主类别;

标签: php function recursion tree


【解决方案1】:

替换这个:

if($pid != "0") {
    findMainCategoryFromAllCatArray($pid, $allCatArray);
}

if($pid != "0") {
   return findMainCategoryFromAllCatArray($pid, $allCatArray);
}

因为当$pid != "0" 开始时,函数什么也不返回 -> 你的NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多