问题已解决,这是解决方案:
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);
}
我的代码有一个小问题,它让我发疯:
我想遍历一个多维数组,即使它的一个值是假的,它应该立即退出循环并返回该值 - 但是中断;似乎不起作用,即使出现一次"假",它返回 true
$TimeCheckArray给出了这个:
数组 ( [0] => 数组 ( [课程 ID] => comp248 [天] => 星期一 [值] => 真 ) [1] => 数组 ( [课程 ID] => comp248 [天] => 星期一 [值] => 真 ) [2] =>数组 ( [课程 ID] => comp345 [天] => 星期一 [值] => 假 ) )
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"。
您的FinalTimeTestt()
返回array(true)
,因为它永远不会通过$TimeCheckArray
数组中的第一个元素 - foreach
循环中 if 语句的两个分支都返回。
第一次迭代着眼于Array ( [courseID] => comp248 [day] => monday [value] => true )
。value
键的值是 true
,因此$TCA['value'] == "true"
计算结果为 true,因此执行 return array(true);
,函数到此结束。您在return
语句后使用break
表明您不太了解后者的作用。
我认为您希望foreach
循环的主体看起来像这样:
if ($TCA['value'] != 'true') {
return array(false, $TCA['courseID'], $TCA['day']);
}