PHP在foreach中返回true

时间:2017-06-24 14:16:27

标签: php arrays methods foreach return

我想检查用户是否使用默认设置。在下面的示例中,我试图检查是否所有" foreached"商品返回true。如果单个预设项目没有返回true,请在整个功能上返回false

private function is_using_default_settings() {
    // returns a huge array with settings
    $merged_preset = $this->options_merged();

    foreach($merged_preset as $preset) {
        if($preset[5] == 1) {
            $section = 'general';
        } elseif($preset[5] == 2) {
            $section = 'advanced';
        } elseif($preset[5] == 3) {
            $section = 'technical';
        }

        $option = get_option($section);

        if($preset[3] == $option[$preset[0]] && !is_null($preset[1])) {
            return true;
        }
    }

    return false;
}

过去几天我一直在集思广益,让我自己排序,但遗憾的是无法让它发挥作用。最好的办法是什么?

2 个答案:

答案 0 :(得分:0)

您可以检查何时为false并阻止完整的foreach然后返回值,如果all为true则返回值为true

试试这个:

private function is_using_default_settings() {
    $returnValue = true;
    $merged_preset = $this->options_merged();

    foreach($merged_preset as $preset) {
        if($preset[5] == 1) {
            $section = 'general';
        } elseif($preset[5] == 2) {
            $section = 'advanced';
        } elseif($preset[5] == 3) {
            $section = 'technical';
        }

        $option = get_option($section);

        if($preset[3] != $option[$preset[0]] || is_null($preset[1])) {
            $returnValue = false;
            break;
        }
    }

    return $returnValue;
}

答案 1 :(得分:0)

当foreach中的任何检查失败时,您应该返回false,否则返回true。

function check()
{
  foreach($arr as $v)
  {
     //check fails
     if(fail of the check) 
         return false;
  }
  return true;
}