如何在PHP或Laravel中检查数组的值中是否有键值对

如何在PHP或Laravel中检查数组的值中是否有键值对,php,arrays,laravel,Php,Arrays,Laravel,我有以下数组。我想知道数组的任何值是否包含键值对RoleCode=>Admin 我可以编写一段很长的代码,如下所示: $isAdmin = false; foreach ($user['Roles'] as $role) { if ($role['RoleCode'] == 'Admin') { $isAdmin = true; } } 有没有更好的方法可以做到这一点?您可以使用和: array_列将返回一个包含“RoleCode”键中所有值的数组 in_数组将

我有以下数组。我想知道数组的任何值是否包含键值对RoleCode=>Admin

我可以编写一段很长的代码,如下所示:

$isAdmin = false;
foreach ($user['Roles'] as $role) {
    if ($role['RoleCode'] == 'Admin') {
        $isAdmin = true;
    }
}
有没有更好的方法可以做到这一点?

您可以使用和:

array_列将返回一个包含“RoleCode”键中所有值的数组 in_数组将检查Admin是否在内部 您可以使用和:

array_列将返回一个包含“RoleCode”键中所有值的数组 in_数组将检查Admin是否在内部 这取决于什么是更好的方法

找到项时添加中断的当前解决方案:

$isAdmin = false;
foreach ($user['Roles'] as $role) {
    if ($role['RoleCode'] == 'Admin') {
        $isAdmin = true;
        break;
    }
}
在最坏的情况下都会打开

其他解决方案,如另一个答案中的一个

$isAdmin = in_array('Admin', array_column($user['Roles'], 'RoleCode'));
这将在最佳情况下打开+O1,在最坏情况下打开+On。不仅仅是最初的foreach

另一个是过滤:

$isAdmin = !empty(array_filter(
    $user['Roles'], 
    function ($v) { return $v['RoleCode'] == 'Admin'; }
));
它总是开着

因此,从可读性和性能的角度来看,初始代码是赢家。

这取决于哪种方法更好

找到项时添加中断的当前解决方案:

$isAdmin = false;
foreach ($user['Roles'] as $role) {
    if ($role['RoleCode'] == 'Admin') {
        $isAdmin = true;
        break;
    }
}
在最坏的情况下都会打开

其他解决方案,如另一个答案中的一个

$isAdmin = in_array('Admin', array_column($user['Roles'], 'RoleCode'));
这将在最佳情况下打开+O1,在最坏情况下打开+On。不仅仅是最初的foreach

另一个是过滤:

$isAdmin = !empty(array_filter(
    $user['Roles'], 
    function ($v) { return $v['RoleCode'] == 'Admin'; }
));
它总是开着


因此,从可读性和性能的角度来看,初始代码是赢家。

添加break将为您提供最佳解决方案。如果您已经了解管理员,您的最终目标是什么?在if语句中执行一些代码,或者捕获admin的值以便以后执行?如果你想做前者,那么你现在的代码就足够了。如果是后者,那么您可能必须执行类似于u.find的操作,然后在外部执行。添加break将为您提供最佳解决方案。如果您已经了解管理员,您的最终目标是什么?在if语句中执行一些代码,或者捕获admin的值以便以后执行?如果你想做前者,那么你现在的代码就足够了。如果是后者,那么您可能必须执行类似于u.find的操作,然后在外部执行。