我在 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/