问题已解决,以下是解决方案:
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);
}
我的代码遇到了一个小问题,让我发疯了:
我想要通过一个多维数组,如果它的一个值都是假的,它应该立即退出循环并返回该值 - 但是会中断;似乎并没有起作用,即使有一个“假”出现,它也会恢复正常
$ TimeCheckArray给出了这个:
数组([0] =>数组([courseID] => comp248 [day] => monday [value] => true)[1] =>数组([courseID] => comp248 [day] => monday [value] => true)[2] =>数组([courseID] => comp345 [day] => monday [value] => false))
function FinalTimeTestt()
{
$TimeCheckArray = makeTimeCheck();
if(count($TimeCheckArray) >0)
{
foreach($TimeCheckArray as $TCA)
{
if($TCA['value'] == "true")
{
return array(true);
}
else
{
return array(false , $TCA['courseID'] , $TCA['day']);
break;
}
}
}
else
{
return array(true);
}
}
我正在使用这样的功能:
$hhhBool = FinalTimeTestt();
if($hhhBool[0])
{
echo "true";
}
else
{
echo "false";
}
它返回true,即使上面的数组中有一个值“false”。
答案 0 :(得分:0)
您的FinalTimeTestt()
正在返回array(true)
,因为它永远不会超过$TimeCheckArray
数组中的第一个元素 - foreach
循环中if语句的两个分支都返回。 / p>
第一次迭代着眼Array ( [courseID] => comp248 [day] => monday [value] => true )
。 value
键的值为true
,因此$TCA['value'] == "true"
的计算结果为true,因此执行return array(true);
,函数结束。您在break
声明后使用return
表示您不太了解后者的行为。
我认为您希望foreach
循环的主体看起来像这样:
if ($TCA['value'] != 'true') {
return array(false, $TCA['courseID'], $TCA['day']);
}