PHP : foreach - 返回问题(第一次出现后)


PHP : foreach - Return issue (after first occurence)

问题已解决,这是解决方案:

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