【问题标题】:Couting occurrences of each value in an array计算数组中每个值的出现次数
【发布时间】:2013-08-03 22:04:33
【问题描述】:

我正在尝试对数组进行排序和拼接,但是我发现它非常混乱。

我已从 mysql 表中提取数据:

$total = mysql_query("SELECT * FROM orders");

然后我将每一列排序到一个数组中:

while($result = mysql_fetch_assoc($total))
{
 $cst[] = $result['customer'];
 $partnumber[] = $result['partnumber'];
 $misc[] = $result['misc'];
}

现在,misc 有许多以随机顺序重复的条目,例如

$misc = array(
              [0] => red, 
              [1] = >red, 
              [2] => blue, 
              [3] => blue, 
              [4] => blue,
              [5] => green,
              [6] =>red
              )

问题:计算 $misc 中每个红色、蓝色或绿色元素的数量的最佳方法是什么?我怎样才能创建一个数组,如$misc_num['red'] = 3 等?

【问题讨论】:

  • 您是否考虑过对 SQL 查询中的值进行排序和计数?
  • 我有,我试图将服务器请求的数量限制为我可以进行一次调用然后使用 PHP 进行过滤。

标签: php arrays


【解决方案1】:

【讨论】:

    【解决方案2】:
    while($result = mysql_fetch_assoc($total))
    {
     $cst[] = $result['customer'];
     $partnumber[] = $result['partnumber'];
     $misc[] = $result['misc'];
    
     if(array_key_exists($result['misc'], $misc_num)) {
       $misc_num[$result['misc']] += 1;
     } else {
       $misc_num[$result['misc']] = 1;
     }
    }
    

    我认为应该这样做!

    【讨论】:

    • +1 用于避免两个循环。可以稍微简化一下:if(!array_key_exists($result['misc'], $misc_num)) { $misc_num[$result['misc']] = 0;} $misc_num[$result['misc']] += 1;。你必须用一个空数组初始化$misc_num(否则你会得到一个警告)。
    【解决方案3】:

    我正在考虑您的以下代码

    $total = mysql_query("SELECT * FROM orders");
    while($result = mysql_fetch_assoc($total))
    {
    $cst[] = $result['customer'];
     $partnumber[] = $result['partnumber'];
     $misc[] = $result['misc'];
    }
    $misc = 数组(
               [0] => 红色,
              [1] = > 红色,
             [2] => 蓝色,
             [3] => 蓝色,
              [4 ] => 蓝色,
               [5] => 绿色,
              [6] =>红色
             )

    现在你可以在这里实现 array_count_values() 函数,比如

    print_r(array_count_values($misc))

    这会产生以下数据

    数组
    (
    [红色] => 3
    [蓝色] => 3
    [绿色] => 1
    )

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2011-05-12
      • 2011-12-27
      • 2021-07-02
      • 2022-08-13
      相关资源
      最近更新 更多