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

nad*_*dav 2 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")
   );
Run Code Online (Sandbox Code Playgroud)

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

 foreach($mainArray as $w => $n) {
  $whatever =  $mainArray[$w][0];
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试计算每个数组的第一个元素中有多少条目是相同的,并且结果类似于:

apple (2)
samsung (2)
microsoft (1)
nokia (1)
Run Code Online (Sandbox Code Playgroud)

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

先感谢您.

hak*_*kre 7

print_r(
    array_count_values(
        array_map('array_shift', $mainArray)
    )
);
Run Code Online (Sandbox Code Playgroud)

输出(演示):

Array
(
    [apple] => 2
    [samsung] => 2
    [microsoft] => 1
    [nokia] => 1
)
Run Code Online (Sandbox Code Playgroud)

所以,即使我是一个忠实的粉丝foreach,为什么我不在这里使用它?

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

因此,剩下的唯一问题是将所有第一项都放入数组中以计算它们array_count_values.这是一个典型的映射工作,我也喜欢映射,foreach所以我尝试了如果array_map一起array_shift工作 - 它确实如此.

但是,您可能希望查找名为的函数array_column.PHP本身尚不可用,但在另一个答案中作为PHP代码:

$counts = array_count_values(array_column($mainArray, 0));
Run Code Online (Sandbox Code Playgroud)

  • *doffs hat*很好玩. (3认同)