这个PHP函数应该计算从数据库传递到数组的值的总和。该函数需要能够接受多个值(数组)值,并返回其求和值的数组。
下面:$ val是列名,$ result是查询返回的数据。因此,数据需要与正确的密钥匹配($ val帮助)。正如您所看到的,我尝试添加一些检查以确保函数在正确的时间返回。回显变量表明我到达了那个点,(“hi”被回显)但它总是返回NULL。如果不够清楚,请随时提问。
function getSum($val,$result,$i=1,$count)
{
$sum = array();
if(is_array($val) == true)
{
foreach($val as $henh)
{
//echo $i;
$this->getSum($henh,$result,$i,$count);
$i++;
}
}
else
{
$strs = explode('.',$val);
$str = $this->getParameters(array($strs[1]));
//var_dump($str[$strs[1]]); exit;
if($str[$strs[1]]['Parameter']['type']=='int' || $str[$strs[1]]['Parameter']['type']=='float')
{
//echo $i;
$c = true;
foreach($result as $item)
{
foreach($item as $k=>$v)
{
if($k==$val AND $v !== null)
{
$c = true;
$sum[$val][] = intval($v);
}
}
}
if($i==$count AND isset($sum[$val]) !== 0)
{
echo "hi!";
}
}
}
答案 0 :(得分:2)
函数中没有return语句,因此它不会返回任何内容。
答案 1 :(得分:0)
因为你没有归还任何东西。您的函数中没有任何返回语句: http://www.php.net/manual/en/function.return.php
答案 2 :(得分:0)
如果你阅读了关于PHP文档的说明,如果没有指定返回值,你的函数将返回NULL
:
注意:如果省略返回值,则返回NULL值。
所以,一个函数,实际上会回归。但它会返回NULL
。
http://www.php.net/manual/en/functions.returning-values.php
除此之外,if
:
if($i==$count AND isset($sum[$val]) !== 0)
在PHP中,!==
(三重不等式)运算符不会使用类型强制,因此您要比较返回isset()
类型的bool
的返回值到0
。此外,AND
在PHP中很奇怪。它的优先级低于&&
和can lead to some weird output,如果您正在进行变量赋值,那么我建议使用&&
,除非您打算使用较低的优先级。
您的if
应该类似于:
if($i == $count && isset($sum[$val]) && $sum[$val] !== 0)
最后,你是以递归方式调用函数,但是你不是以递归方式返回值。
此:
$this->getSum($henh,$result,$i,$count);
应该是这样的:
return $this->getSum($henh,$result,$i,$count);