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

时间:2014-04-06 18:33:13

标签: php arrays function return

问题已解决,以下是解决方案:

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”。

1 个答案:

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