有没有办法从匿名函数内部停止 array_walk
?
这里有一些示例代码(有效)来说明我的意思,它检查数组是否只有数值。
$valid = true;
array_walk($parent, function ($value) use (&$valid) {
if (!is_numeric($value)) {
$valid = false;
}
});
return $valid ? 'Valid' : 'Invalid';
如果我有一个足够大的数组,并且第一个条目无效,其余(冗余)检查仍会完成,所以我想停止执行。
使用 break
/continue
不起作用(错误: fatal error :无法在...中中断/继续 1 级
)。
注意:我不想重写代码,我只是想知道如果这是可能的。
最佳答案
如前所述,理论上这是可能的,但我建议不要这样做。下面是如何使用异常来跳出 array_walk
。
<?php
$isValid = false;
$array = range(1, 5);
try {
array_walk($array, function($value) {
$isAMagicNumber = 3 === $value;
if ($isAMagicNumber) {
throw new Exception;
}
});
}catch(Exception $exception) {
$isValid = true;
}
var_dump($isValid);
/*
bool(true)
*/
关于php - 从匿名函数中中断 array_walk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853113/