首页 > 解决方案 > 如果 foreach 方法中的所有方法调用都返回 true,则 PHP 返回 true

问题描述

我在使用 foreach 时遇到了一个问题,如果 foreach 循环中的 IF 语句返回 true,我的方法应该返回 true,但问题是该语句只对数组中的第一个元素执行,而不是对整个数组执行。我尝试搜索,但我找不到我的问题的明确答案。这是我的代码片段

public function SaveDisplayOrder($aUnitCustomField)
{
    var_dump($aUnitCustomField);
    foreach($aUnitCustomField as $pUnitCustomField)
    {
      if (CUnitCustomFieldsTable::SaveUnitCustomField($pUnitCustomField))
      {
          return true;
      }
    }
    return false;
}

因此,如果该SaveUnitCustomField方法对第一个元素返回 true$aUnitCustomField并停止执行,则返回,我如何检查SaveUnitCustomField整个 $aUnitCustomField数组。

标签: php

解决方案


你知道什么比“失败”更好吗?“这些具体的事情失败了”,所以你可以真正采取行动。

public function SaveDisplayOrder( $aUnitCustomField ) {
    $returnValue = true;
    $errors = [];
    foreach( $aUnitCustomField as $pUnitCustomField ) {
        if ( ! CUnitCustomFieldsTable::SaveUnitCustomField($pUnitCustomField) )   {
            $returnValue = false;
            $errors[] = "Error when saving $pUnitCustomField";
        }
    }
    return [$returnValue, $errors];
}

推荐阅读