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

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

有没有更简单的方法来做到这一点,即一种方式来说,任何带有关键’饮食’的数组元素都有数据?

解决方法:

您可以使用array_filter和array_column的组合来提取所需的列,然后检查它是否为空…

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

或者:

$show_dietary_button = !empty(array_filter(array_column($records, 'diet')));

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...