【问题标题】:How to check matching array values in php?如何在php中检查匹配的数组值?
【发布时间】:2013-11-28 08:12:43
【问题描述】:

嗨,我在数组值中有一个重复日期,我想从数组值中计算重复日期的数量。我试过了,但不确定是否正确,并且收到错误Undefined offset: 0

<?php $array = array('2013-11-28','2013-11-28','2013-11-28','2013-11-29','2013-11-29','2013-11-30');

$len = sizeof($array);
$len = $len-1;
$day = array();
for($i=0; $i<=$len; $i++)
{
    for($j=0; $j<=$len; $j++)
    {
        if($array[$i] == $array[$j])
        {
            if($day[0] == '')
            {
                $co = 1;
                $day[] = $co;
            }
            else {
                $day[$i] = $co++;
            }
        }
    }
    echo 'day'.$i.' '.$day[$i].' ';
}
?>

从日期值来看,我应该得到 2013-11-28 的 3、2013-11-29 的 2 和 2013-11-30 的 1,如您所见,2013-11-28 出现了 3 次,2013-11 -29 出现 2 次,并且 2013-11-30 呈现一次。

我可以理解我计算错误,因为在第二个循环中我再次从第一个索引开始,因此增加了计数。

我想知道相同日期的计数。这该怎么做。还有其他方法可以计算吗?请问有什么帮助吗?

【问题讨论】:

  • 您要分组计数吗?比如2013-11-28 = 32013-11-29 = 22013-11-30 = 1?
  • $len = sizeof($array);使用 $len = count($array);
  • @SHIN sizeofcount 是等价的。
  • 错误是因为if ($day[0] == '')。您在向$day 添加任何内容之前执行此操作,因此还没有元素 0。
  • 好的,谢谢。 +1 为 sizeof 和 count @Barmar

标签: php arrays loops for-loop foreach


【解决方案1】:

使用array_count_values()

$dupesCount = array_count_values($array);

这将为您提供一个数组,其中值是键,新值是重复计数。

【讨论】:

  • 感谢您的简单回答。这也可以在我的循环逻辑中完成吗? @亚历克斯
  • @sun 你不需要自己循环。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2020-12-22
  • 2021-12-01
  • 1970-01-01
  • 2018-10-09
  • 2017-09-27
  • 1970-01-01
  • 2013-08-22
相关资源
最近更新 更多