php - 从匿名函数中中断 array_walk

标签 php anonymous-function

有没有办法从匿名函数内部停止 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/

相关文章:

javascript - 如何将 javascript 集成到 phalcon php 的 .volt 模板引擎

php - Nginx 动态拒绝/允许 IP 访问文件 - 即时

php - 插入不起作用

php - 检测字符串是否包含至少 2 个字母(任何语言)和至少 2 个单词

JavaScript 匿名函数表达式 vs IIFE

php - 基于当前页面突出显示链接(动态导航 PHP)

javascript - 为什么箭头函数没有参数数组?

javascript - 函数未作为函数传递

c - c 中的匿名代码块

PHP - 以参数作为参数传递函数