PHP提取并计算多维数组中每个元素的第一个元素

标签 php arrays multidimensional-array

我在 php 中有这个数组,

   $mainArray = array(
      array("apple","two", "grren"),
      array("samsung","five", "red"),
      array("microsoft","one","gray"),
      array("apple","nine", "blue"),
      array("samsung","ten", "white"),
      array("nokia","seven", "yellow")
   );

我可以很容易地遍历它并提取每个数组的所有第一个条目,如下所示:

 foreach($mainArray as $w => $n) {
  $whatever =  $mainArray[$w][0];
}

我正在尝试计算每个数组的第一个元素中有多少条目相同,结果如下:

apple (2)
samsung (2)
microsoft (1)
nokia (1)

我只是不确定这样做的正确方法是什么。

提前谢谢你。

最佳答案

print_r(
    array_count_values(
        array_map('array_shift', $mainArray)
    )
);

输出(Demo):

Array
(
    [apple] => 2
    [samsung] => 2
    [microsoft] => 1
    [nokia] => 1
)

所以即使我是 foreach 的忠实粉丝,为什么我没有在这里使用它呢?

首先,要计算数组中的值,在 PHP 中我们有 array_count_values .它为我们完成了工作。

所以剩下的唯一问题就是将所有第一项放入一个数组中,然后用 array_count_values 对它们进行计数。这是一个典型的映射工作,我也喜欢在 foreach 旁边进行映射,所以我尝试了 if array_map连同 array_shift奏效了 - 它确实奏效了。

但是,您可能想要查找名为 array_column 的函数。 PHP 本身尚不可用,但 as PHP code in another answer :

$counts = array_count_values(array_column($mainArray, 0));

关于PHP提取并计算多维数组中每个元素的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313641/

相关文章:

php - 在没有 symfony 框架的情况下使用 symfony/mailer 组件

java - 如何将 Unity webapp 放到 Google 应用引擎上

php - 如何用引号将 '+' 或 '-' 的字符串括起来?

javascript - 检查嵌套数组中的元素

php - 警告:PDOStatement::execute():SQLSTATE[42000]:语法错误或访问冲突:1064

c - 带字符串数组的 strcpy

c - 修改动态分配的 char* 二维数组的函数

javascript - 在 JavaScript 中将标签应用于多维数组中的对象

javascript - 在二维数组中查找数组的索引?

数组的javascript数组