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']);
}