首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在多维数组的每个类别中计数项

在多维数组的每个类别中计数项
EN

Stack Overflow用户
提问于 2015-02-04 15:08:36
回答 4查看 135关注 0票数 0

我有一个多维数组,我需要计算每个类别中有多少项:

代码语言:javascript
运行
复制
array (
    array(
       'name' => 'Bob',
       'category' => '2'
    ),
    array(
       'name' => 'Bill',
       'category' => '6'
    ),
    array(
    'name' => 'John',
    'category' => '1'
    ),
    array(
       'name' => 'Jack',
       'category' => '2'
    ),
 )

我想把它们分成几个类别。

例如;

  • 类别2包含2项
  • 类别1包含1项
  • 第6类包含1项

仅仅得到每个类别的计数将是很好的,但是能够将数组重新排列到类别中也是有用的。我想两者兼得。

我尝试过搜索StackOverflow,但是找不到这个特定的查询。我猜这可能会在某个地方使用array_map,但我对这个函数不太熟悉。

任何帮助都是非常感谢的!

EN

Stack Overflow用户

发布于 2015-02-04 15:24:53

我已经写了三个函数,解决了你所描述的标准。请记住,这些函数是最小的,并且缺少错误处理。它还假定所有函数所需的$categories数组都具有您问题中概述的结构。

第一种方法将所有项目重新排列到正确的类别中。

代码语言:javascript
运行
复制
function rearrangeCategories(array $categories) {

    $calculated = [];

    foreach($categories as $category) {

        $calculated[$category['category']][] = $category['name'];

    }

    return $calculated;

}

第二种方法创建一个关联数组,表示每个类别中的项数。数组索引是类别名称/id,值是一个整数,声明项目的数量。

代码语言:javascript
运行
复制
function categoriesCount(array $categories) {

    $calculated = [];
    $arranged   = rearrangeCategories($categories);

    foreach($arranged as $category => $values) {
        $calculated[$category] = count($values);
    }

    return $calculated;

}

第三个函数检查一个特定类别中存储了多少项。如果类别不存在,则返回FALSE。否则,返回一个整数。

代码语言:javascript
运行
复制
function categoriesItemCount(array $categories, $key) {

    $arranged = rearrangeCategories($categories);

    if(!array_key_exists($key, $arranged)) {
        return false;
    }

    return count($arranged[$key]);

}

我希望这能帮上忙,快乐的编码。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28324667

复制
相关文章

相似问题

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