【问题标题】:PHP: Array_keys() with multiple search values? [duplicate]PHP:具有多个搜索值的 Array_keys()? [复制]
【发布时间】:2019-07-16 11:32:58
【问题描述】:

我有一个带有 unix 时间戳值的数组,如下所示:

Array ( 
[1552345200] => 2 
[1552431600] => 1 
[1552518000] => 1 
[1552604400] => 3 
[1552690800] => 3 
[1552777200] => 1 
[1552863600] => 2 
[1552950000] => 2 
[1553036400] => 4 
[1553122800] => 1 
)

它包含一个日期和重复的次数,例如,第一个重复两次。

我需要获取一个日期数组,其中只有重复数字(unix 时间戳右侧的数字)大于 1,这意味着最终数组将包含重复的日期。

我该怎么做?

【问题讨论】:

  • if key > 1 将其存储在另一个数组中,类似

标签: php arrays


【解决方案1】:

欢迎来到 StackOverflow。

以下是您的简单方法:

$filtered = array_filter($arr, function($value, $key) { return $value > 1; });

更多:http://php.net/manual/en/function.array-filter.php

【讨论】:

    【解决方案2】:

    循环遍历数组并将repeat > 1的元素添加到新数组中。

    $sortedArray = array();
    foreach($array as $k => $v){
        if($v > 1){
            $sortedArray[$k] => $v;
        }
    }
    

    【讨论】:

      【解决方案3】:
      foreach($array as $timestamp => $repeats) {
          if ($repeats <= 1) {
             unset($array[$timestamp]);
             // delete false entries from array
          }
      
          // or you could
      
          if ($repeats > 1) {
              $result[$timestamp] = $repeats;
              //take right entries and put them in a new
          }
       }
      

      有很多选择如何做到这一点。

      【讨论】:

      • 如果您将unset 用于$array,则此数组在其他位置将无用。
      • @devpro 你能再解释一下吗,我现在不明白你的意思
      • 你正在使用未设置的原始数组,这将覆盖这个原始数组。
      • @devpro 没错。在 foreach 之后,原始数组将被清除不必要的条目。这就是计划...如果您不希望在 foreach 中出现任何错误/错误条目,请使用 continue 而不是 unset
      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 2023-04-03
      • 1970-01-01
      • 2014-12-03
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      相关资源
      最近更新 更多