Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么不是';我的函数没有返回字符串吗?_Php_Recursion - Fatal编程技术网

Php 为什么不是';我的函数没有返回字符串吗?

Php 为什么不是';我的函数没有返回字符串吗?,php,recursion,Php,Recursion,我有一个函数,它首先查找要添加到字符串中的高级品牌。如果没有足够的优质品牌,它会继续宣传非优质品牌(最多4个品牌) 我能够在函数中回显字符串,它显示了4个品牌,但我无法返回字符串。为什么呢 $bnames = addBrandNameToTitle($model); echo $bnames; // This is empty function addBrandNameToTitle($model, $brandNames = array(), $ispremium = true){

我有一个函数,它首先查找要添加到字符串中的高级品牌。如果没有足够的优质品牌,它会继续宣传非优质品牌(最多4个品牌)

我能够在函数中回显字符串,它显示了4个品牌,但我无法返回字符串。为什么呢

$bnames = addBrandNameToTitle($model);
echo $bnames; // This is empty

function addBrandNameToTitle($model, $brandNames = array(), $ispremium = true){
    if($ispremium):
        foreach ($model->brands as $brand):
            if ($brand->isPremium() && count($brandNames)  < 4):
                array_push($brandNames, $brand->name);
            endif;

            if(count($brandNames)  >= 4){
                return implode(',', $brandNames);
            }
        endforeach;
        // If not enough premium, add non-premium brands
        addBrandNameToTitle($model, $brandNames, false);
    else:
        foreach ($model->brands as $brand):
            if (!$brand->isPremium() && count($brandNames) < 4):
                array_push($brandNames, $brand->name);
            endif;
        endforeach;
        $bnames = implode(',', $brandNames);
        echo $bnames; // <-- This lists 4 brands
        return $bnames; // <-- But this is not returning the string. Why?
    endif;
}
$bnames=addBrandNameToTitle($model);
echo$bnames;//这是空的
函数addBrandNameToTitle($model,$brandNames=array(),$ispremium=true){
如果($ispremium):
foreach($model->品牌为$brand):
如果($brand->isPremium()&&count($brandNames)<4):
数组推送($brandNames,$brand->name);
endif;
如果(计数($brandNames)>=4){
返回内爆(“,”,$brandNames);
}
endforeach;
//如果没有足够的优质产品,请添加非优质品牌
addBrandNameToTitle($model,$brandNames,false);
其他:
foreach($model->品牌为$brand):
如果(!$brand->isPremium()&&count($brandNames)<4):
数组推送($brandNames,$brand->name);
endif;
endforeach;
$bnames=内爆(“,”,$brandNames);

echo$bnames;//在这段代码中,您忘记了返回值

// If not enough premium, add non-premium brands
return addBrandNameToTitle($model, $brandNames, false);  // Add a return

在这段代码中,您忘记了返回值

// If not enough premium, add non-premium brands
return addBrandNameToTitle($model, $brandNames, false);  // Add a return

在这段代码中,您忘记了返回值

// If not enough premium, add non-premium brands
return addBrandNameToTitle($model, $brandNames, false);  // Add a return

在这段代码中,您忘记了返回值

// If not enough premium, add non-premium brands
return addBrandNameToTitle($model, $brandNames, false);  // Add a return

谢谢。就是这样。我以前从未使用过
return
。你能解释一下为什么我需要它,而不仅仅是用参数递归调用函数吗?第一次调用函数时,
$isPremium
true
。这意味着执行if语句的第一部分。唯一的
return
>语句位于
else
部分,该部分不会执行。因为没有显式返回,所以函数不会返回任何内容。这与任何递归或其他可能发生的事情无关。谢谢。就是这样。我以前从未使用过
return
。您能解释为什么我需要它,而不仅仅是调用它吗g使用参数递归函数?第一次调用函数时,
$isPremium
true
。这意味着执行if语句的第一部分。唯一的
return
语句位于
else
部分,该部分不会执行。因为没有显式返回,函数returns nothing。这与任何递归或任何其他可能发生的事情无关。谢谢。就是这样。我以前从未使用过
return
。您能解释一下为什么我需要它,而不仅仅是用参数递归调用函数吗?第一次调用函数时,
$isPremium
true
。T他的意思是执行if语句的第一部分。唯一的
return
语句在
else
部分,没有执行。因为没有显式的返回,函数什么也不返回。这与任何递归或可能发生的任何事情无关。谢谢。就是这样。我从来没有这样做过请在前面使用
return
。您能解释我为什么需要它,而不仅仅是使用参数递归调用函数吗?第一次调用函数时,
$isPremium
true
。这意味着执行if语句的第一部分。唯一的
return
语句位于
else
中>不执行的部分。因为没有显式返回,所以函数不返回任何内容。这与任何递归或其他可能发生的事情无关。