Php 为什么不是';我的函数没有返回字符串吗?
我有一个函数,它首先查找要添加到字符串中的高级品牌。如果没有足够的优质品牌,它会继续宣传非优质品牌(最多4个品牌) 我能够在函数中回显字符串,它显示了4个品牌,但我无法返回字符串。为什么呢Php 为什么不是';我的函数没有返回字符串吗?,php,recursion,Php,Recursion,我有一个函数,它首先查找要添加到字符串中的高级品牌。如果没有足够的优质品牌,它会继续宣传非优质品牌(最多4个品牌) 我能够在函数中回显字符串,它显示了4个品牌,但我无法返回字符串。为什么呢 $bnames = addBrandNameToTitle($model); echo $bnames; // This is empty function addBrandNameToTitle($model, $brandNames = array(), $ispremium = true){
$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
中>不执行的部分。因为没有显式返回,所以函数不返回任何内容。这与任何递归或其他可能发生的事情无关。