首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:在多维数组中计数相同的值

PHP:在多维数组中计数相同的值
EN

Stack Overflow用户
提问于 2014-02-12 21:29:50
回答 2查看 4.8K关注 0票数 1

我想在多维数组的最深/最后一级计数相同的值:

代码语言:javascript
运行
复制
Array
(
[svote001] => Array
    (
        [0] => 006
        [1] => 006
        [2] => 007
    )

[svote002] => Array
    (
        [0] => 000
        [1] => 000
        [2] => 000
    )

[svote003] => Array
    (
        [0] => 002
        [1] => 003
        [2] => 001
    )
)

转换成

代码语言:javascript
运行
复制
Array
(
[svote001] => Array
    (
        [006] => 2
        [007] => 1
    )

[svote002] => Array
    (
        [000] => 3
    )

[svote003] => Array
    (
        [001] => 1
        [002] => 1
        [003] => 1
    )
)

此外,还应将计数值从高到低进行排序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-12 21:39:49

代码语言:javascript
运行
复制
foreach($array as $k => $v) {
    $result[$k] = array_count_values($v);
    arsort($result[$k]);
}
  • 循环遍历数组(公开键)以访问每个内部数组
  • 计算内部数组的值(值为键,计数为值)
  • 按保留键的值(计数)排序
票数 6
EN

Stack Overflow用户

发布于 2014-02-12 21:39:31

这应该符合你的需要:

代码语言:javascript
运行
复制
<?php

$a = array(
    'svote001' => array("006", "006", "007"),
    'svote002' => array("000", "000", "000"),
    'svote003' => array("003", "001", "001"),
);
$resultArray = array();

foreach ($a as $arrayName => $arrayData){
    $resultArray[$arrayName] = array();
    foreach ($arrayData as $value){
        if (empty($resultArray[$arrayName][$value])){
            $resultArray[$arrayName][$value] = 1;
        }else{
            $resultArray[$arrayName][$value]++;
        }
    }
    arsort($resultArray[$arrayName]);
}

var_dump($resultArray);

编辑:使用这个 AbraCadaver解决方案要好得多。无论如何,我都会让答案留在这里。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21740079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档