【问题标题】:Calculate the most common value from a php array从 php 数组中计算最常见的值
【发布时间】:2016-04-21 09:48:43
【问题描述】:

我正在尝试获取最常见的时间数组。 foreach 循环是拆分值并仅用小时获取一个数组

 foreach ($times as $k => $v) {
    $avtime[$k] = explode("T", $v);
    $avtimeb[$k] = $avtime[$k][1];
    foreach ($avtimeb as $kb => $vb) {
        $avtimec[$kb] = explode(":", $vb);
        $avtimed[$kb] = $avtimec[$kb][0];
    }
}

和print_r($avtimed); 生成以下内容:

Array
(
    [0] => 08
    [1] => 08
    [2] => 08
    [3] => 08
    [4] => 09
    [5] => 09
    [6] => 08
    [7] => 08
    [8] => 08
    [9] => 10
    [10] => 09
    [11] => 09
    [12] => 10
    [13] => 11
    [14] => 07
    [15] => 08
    [16] => 13
    [17] => 07
    [18] => 08
    [19] => 08
    [20] => 08
    [21] => 09
    [22] => 09
    [23] => 09
    [24] => 09
)

现在我需要从上面得到最常见的值。

【问题讨论】:

  • 问之前有没有尝试过?如果是这样,请输入您正在处理的代码:-)
  • 这些数据是从哪里来的?如果它来自数据库,那么最好让数据库为您解决这个问题。
  • 它是从 facebook api 中提取的帖子的时间数组。
  • array_count_values(array_map(function($value) { return substr(11,2, $value); })); 是一个很好的起点;然后你可以对结果数组进行排序

标签: php


【解决方案1】:

使用外部数组,您可以存储相似的时间。然后浏览数组以获取公共时间。

技术

$out = array(); 
foreach($array as $key => $value){
    $part = explode("T", $value);
    $hour = explode(":", $part[1]);
    $out[$hour[0]] = $hour[0];
}

print_r($out);

【讨论】:

    【解决方案2】:

    最后一个是:

    foreach ($times as $k => $v) {
        $avtime[$k] = explode("T", $v);
        $avtimeb[$k] = $avtime[$k][1];
        foreach ($avtimeb as $kb => $vb) {
            $avtimec[$kb] = explode(":", $vb);
            $avtimed[$kb] = $avtimec[$kb][0];
        }
    }
    $count = array_count_values($avtimed);
    arsort($count); 
    $keys = array_keys($count);
    echo "The most occuring value is $keys[0] and the second one is $keys[1]";
    

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 2015-02-02
      相关资源
      最近更新 更多