如何检查数组的所有键是否都是预期的格式

时间:2017-10-05 20:04:04

标签: php arrays

我有一个包含多个键的数组,我想确保它们都是我想要的格式。例如,如果它们都是ISO Alpha-2国家代码,我创建了一个返回true或false的函数来测试它。

基本上,我想用一行替换这个foreach:

$countriesList = ['US', 'FR', 'CA'];
$correct = true;

foreach ($countriesList as $iso2) {
    if (!$this->isIso2($iso2)) {
        $correct = false;
    }
}

1 个答案:

答案 0 :(得分:0)

如果您确实想要通过一次通话取代foreach,您可以使用 array_walk ,如下所示:

$countriesList = ['US', 'FR', 'CA'];
$correct = true;

array_walk( $countriesList, function( $country ) use (&$correct) { $correct = $correct && $this->isIso2( $country ); } );

语句use (&$correct)允许内联回调访问$correct变量(否则将超出回调范围)。

注意:

您的原始代码中没有问题

它可读,简洁,我没有看到任何明显的性能缺陷。

我只需添加一个break;来第一次终止循环" false case"找到了。没有理由继续迭代:

if (!$this->isIso2($iso2)) {
    $correct = false;
    break; // <--- EXIT THE LOOP
}

在制作中,我肯定会坚持使用foreach方法。

无论如何,作为编程练习,我的答案开头的解决方案会减少一次通话的循环。

array_walk遍历数组的所有项。对于每个项目,调用内联回调函数,并将当前项目作为第一个参数传递。