PHP:foreach-退货问题(首次发生后)
问题已解决,以下是解决方案:PHP:foreach-退货问题(首次发生后),php,arrays,function,return,Php,Arrays,Function,Return,问题已解决,以下是解决方案: function FinalTimeTestt() { $TimeCheckArray = makeTimeCheck(); $TBool = true; if(count($TimeCheckArray) >0) { foreach($TimeCheckArray as $TCA) { if($TCA['
function FinalTimeTestt()
{
$TimeCheckArray = makeTimeCheck();
$TBool = true;
if(count($TimeCheckArray) >0)
{
foreach($TimeCheckArray as $TCA)
{
if($TCA['value'] != "true")
{
$TBool = false;
return array($TBool , $TCA['courseID'] , $TCA['day']);
break;
}
else
{
// do Nothing
}
}
}
else
{
return array($TBool);
}
return array($TBool);
}
我的代码有一个小问题,这让我发疯:
我想遍历一个多维数组,如果它的一个值为false,它应该立即退出循环并返回该值——不管如何;似乎不起作用,即使出现一次“false”,它也会返回true
$TimeCheckArray提供了以下功能:
数组([0]=>Array([courseID]=>COM248[day]=>monday[value]=>true)[1]=>Array([courseID]=>COM248[day]=>monday[value]=>true)[2]=>Array([courseID]=>COM345[day]=>monday[value]=>false))
我使用的函数如下所示:
$hhhBool = FinalTimeTestt();
if($hhhBool[0])
{
echo "true";
}
else
{
echo "false";
}
它返回true,即使上面的数组中有一个值“false”。您的FinalTimeTestt()
返回array(true)
,因为它永远不会超过$TimeCheckArray
数组中的第一个元素-foreach循环中if语句的两个分支返回
第一次迭代查看数组([courseID]=>comp248[day]=>monday[value]=>true)
。value
键的值为true
,因此$TCA['value']==“true”
计算结果为true,因此返回数组(true)代码>被执行,函数在此结束。在return
语句之后使用break
,表明您不太了解后者的作用
我想您希望您的foreach
循环的主体看起来像这样:
if ($TCA['value'] != 'true') {
return array(false, $TCA['courseID'], $TCA['day']);
}
啊,谢谢-我没有意识到,如果我删除第一个返回,它会一直循环直到它达到一个假值吗?我认为返回之前的空else
子句和对$TBool
的赋值是草率的。我建议用我答案中的3行作为正文。
if ($TCA['value'] != 'true') {
return array(false, $TCA['courseID'], $TCA['day']);
}