有没有办法查看具有命名键的任何数组元素中的数据是否没有遍历整个数组?

时间:2016-11-01 14:44:45

标签: php arrays

我正在开发一个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>';
}

是否有一种更简单的方法可以做到这一点,即用一种关键的饮食来做做任何数组元素的方法&#39;有数据吗?

1 个答案:

答案 0 :(得分:2)

您可以使用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')));