有没有一种方法可以在不遍历整个数组的情况下,查看任何具有指定键的数组元素中是否有数据?


Is there a way to see if there's data in any array elements with a named key without looping through the whole array?

我正在开发一个PHP 7的应用程序,它有一个用户和他们的饮食需求列表。

如果任何的用户有饮食要求,我需要显示一个链接到一个页面,可以显示他们;相反,如果没有用户有这样的需求,则不显示。

我的$users数组看起来像这样:

[
    [ 'name' => 'Andy', 'diet' => '' ],
    [ 'name' => 'Bob', 'diet' => 'Vegeterian' ],
    [ 'name' => 'John', 'diet' => '' ]
]

在上面的例子中,Bob有饮食需求,需要显示按钮。

我的计划是确定是否显示按钮,包括循环通过整个$users数组,如果它发现任何'diet'数组元素不是空的,它显示按钮,例如

$show_dietary_button = false;
foreach ($users as $user) {
    if ($user['diet'] !== '') {
       $show_dietary_button = true;
       break;
    }
}
if ($show_dietary_button) {
    echo '<a href="#">Show Dietary Requirements</a>';
}

是否有一种更简单的方法来做到这一点,即一种方法说做任何数组元素的关键'diet'有数据在他们?

您可以使用array_filterarray_column的组合来提取您想要的列,然后检查它是否为空…

if (!empty(array_filter(array_column($records, 'diet')))) {
    $show_dietary_button = true;
}

另外:

$show_dietary_button = !empty(array_filter(array_column($records, 'diet')));
相关文章: