我在使用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
方法对$aUnitCustomField
的第一个元素返回true并停止执行,则返回此值,如何检查整个SaveUnitCustomField
数组的$aUnitCustomField
。
答案 0 :(得分:2)
您知道什么比“失败的事情”更好吗? “这些特定的操作失败了”,因此您可以采取实际行动。
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];
}