当前位置: 首页 > 知识库问答 >
问题:

在多维数组中获取多个相同值

计阳泽
2023-03-14

基本上我有一个数组如下所示:

Array
(
   Array
   (
       [action] => call
       [when] => today
   )
   Array
   (
       [action] => call
       [when] => today
   )
   Array
   (
       [action] => message
       [when] => today
   )
   Array
   (
       [action] => facetime
       [when] => tomorrow
   )
)

用什么方法来计算重复次数最多的动作以及它重复了多少次?关键字“when”无关紧要。

共有1个答案

史旺
2023-03-14

您可以使用一些内置数组函数。

使用array_column提取列'action'的值并将其传递给array_count_values将给出每个操作的频率。

然后,如果我们通过使用max获得最大出现次数,我们可以使用它来筛选关联数组(使用array_filter)以获得出现次数最多的数组。

$occurrences = array_count_values(array_column($arr, 'action'));
$max = max($occurrences);

return array_filter($occurrences, function ($val) use ($max) {
    return $val === $max;
});
 类似资料:
  • 我想从你那里得到电话号码 使用JavaScript/jQuery。 这个系列可能会更多。

  • 问题内容: 例 问题,如何获得单一值,例如: 问题答案: 查看您的中的键和缩进: …等等

  • 问题内容: 我有一个像这样的数组: 如何删除重复的值,以便得到此信息: 我尝试使用array_unique,但是我认为由于该数组是多维的,因此无法正常工作。 编辑:我还需要此数组是多维的,并且以这种格式,我不能展平它。 问题答案: 在比较值以查找唯一值之前正在使用字符串转换: 注意 :当且仅当时,两个元素才被视为相等。换句话说:当字符串表示相同时。将使用第一个元素。 但是数组将始终转换为: 您可以

  • 问题内容: 我有一个二维数组,即序列数组也是数组。对于每个序列,我想计算自相关,因此对于(5,4)数组,我将获得5个结果或维度为(5,7)的数组。 我知道我可以循环浏览第一个维度,但这很慢,也是我的最后选择。还有另一种方法吗? 谢谢! 编辑: 根据选择的答案以及mtrw的评论,我具有以下功能: 请注意,在我的代码中,length是一个全局变量,因此一定要声明它。我也没有将结果限制为实数,因为我还需

  • 问题内容: 我正在尝试为多维数组中的特定键选择最大值。我无法“找到”有问题的钥匙… 因此,数组(比我在这里发布的要冗长得多) 我试图在整个数组中找到最大的“ dnum”值,因此在此示例中,$ max =2。我知道max函数允许我执行此操作,但是我不确定如何引用dnum。元素而不将整个对象放入foreach循环中,如果我这样做了,那么max不会成为要使用的函数,对吗? 因此,我无法完全做到这一点:

  • MATLAB中的多元数组MATLAB是下标多于两个的数组。可以调用带有两个以上变元的zeros, ones, rand, 或randn函数来产生。例如, R = randn(3,4,5); 生成一个3*4*5的数组,共有3x4x5 = 60个正态分布的随机元素。 三维数组可能表示三维物理数据,譬如房间的温度,取样于一个长方形网格。或者,可表示一个矩阵序列A(k),或依赖时间变化的矩阵A(t)。在