Php 在子数组中搜索特定键

Php 在子数组中搜索特定键,php,arrays,Php,Arrays,搜索数组元素的子数组以检查特定键的值的最有效方法是什么?例如,给定以下数组,其中我要检查两个子数组的“msg”值,如果其中一个子数组已填充,则返回布尔结果: [TGMN02] => Array ( [2] => Array ( [id] => 93143 [msg] => )

搜索数组元素的子数组以检查特定键的值的最有效方法是什么?例如,给定以下数组,其中我要检查两个子数组的“msg”值,如果其中一个子数组已填充,则返回布尔结果:

[TGMN02] => Array
        (
            [2] => Array
                (
                    [id] => 93143
                    [msg] => 
                )

            [3] => Array
                (
                    [id] => 24876
                    [msg] => 
                )
        )
目前我所做的只是循环和检查,这感觉相当笨拙。

我不知道“最”高效,但这不一定要遍历整个数组,因为它在找到第一个值时就打破了循环,所以技术上更高效

 function hasMsg($a){
   foreach($a as $b)
     if(!empty($b['msg'])) return true;
   return false;
 }

好的。。。由于一些微不足道的评论没有附带其他建议-您可以尝试使用一些PHP>5.3-我真的看不出它将如何更有效-它仍然必须在某种程度上通过数组循环(但我不能100%确定PHP解释器的内部工作原理——也许有一些内部魔法可以加快速度),因此这可能纯粹是美学上的:

$hasMsg = !!(count(array_filter($a,function($b){ return !empty($b['msg']); })));
…如果有效率更低的话。通过数组“循环”没有什么错-这是一种从数字时代开始就存在的经过尝试和测试的语言结构(几乎)。

我不知道“大多数”效率很高,但这不一定要遍历整个数组,因为它会在找到的第一个值上打破循环,因此技术上更高效

 function hasMsg($a){
   foreach($a as $b)
     if(!empty($b['msg'])) return true;
   return false;
 }

好的…由于一些微不足道的评论没有附带其他建议-您可以尝试使用一些PHP>5.3-我真的看不出它将如何更有效-它仍然必须在某种程度上通过数组循环(但我不能100%确定PHP解释器的内部工作原理——也许有一些内部魔法可以加快速度),因此这可能纯粹是美学上的:

$hasMsg = !!(count(array_filter($a,function($b){ return !empty($b['msg']); })));

…如果效率不高的话。通过数组“循环”没有什么错-这是一种经过测试的语言构造,从数字时代的黎明(几乎)开始就存在了。

首先编写一些自定义func,然后尝试将其与array\u walk\u recursive(array&$input,callable$funcname)一起使用[,mixed$userdata=NULL])函数..

首先编写一些自定义func,然后尝试将其与array\u walk\u recursive(array&$input,callable$funcname[,mixed$userdata=NULL])函数一起使用..

/向我们展示一些实际代码…一种或另一种形式的循环是实现方法…一些用户将其标记为重复,但“How to search by key=>PHP中多维数组中的值”是一个非常不同类型的问题(一个深度嵌套的数组,需要递归解决方案)。这个问题似乎需要一个简单的循环,只检查一级深度的子元素。/给我们看一些真实的代码…一种或另一种形式的循环就是这样做的方式…一些用户将其标记为重复,但“如何在PHP中的多维数组中按键=>值进行搜索”它所关联的问题是一种非常不同类型的问题(深度嵌套的数组,需要递归解决方案)。这个问题似乎要求一个简单的循环,只检查一级深度的子元素。您只是“循环并检查”。您已经重新创建了OP已经说过的答案,但没有回答他们实际提出的问题。“我现在所做的只是循环和检查,这感觉非常笨拙。”不管它“感觉笨拙”,这都是一个很好的解决方案,可以解决PHP中的这个特定问题。您只是“循环和检查”。您已经重新创建了OP已经说过的答案,但没有回答他们实际提出的问题。“我现在所做的只是循环和检查,感觉很笨拙。”不管它“感觉笨拙”,这是一个很好的解决方案,就像PHP中存在的这个特定问题一样。