繁体   English   中英

PHP Array_Unique问题

[英]PHP Array_Unique Problem

我不太了解PHP,所以请多多包涵。

我的客户有一个包含信息的数据库,其中一个字段为ff_date_time,格式为“ 2010年10月5日星期二14:43:10”。 这里有很多条目,我需要显示仅包含条目的日期的列表:即,

  • 2010年10月5日,星期二
  • 周四2010年10月7日
等等。 某天可能有数百个条目,因此很明显,当我从数据库中提取日期时,我需要仔细研究并提取正确的数据并进行过滤。 这是我到目前为止的内容:

 $query = "SELECT ff_date_time FROM booth_submit"; $query_result = mysql_query($query); $datetimes = array(); $dates = array(); while ($row = mysql_fetch_array($query_result)) { $datetimes[] = $row['ff_date_time']; } for ($i = 0; $i < sizeOf($datetimes); $i++) { $temp = explode(" ", $datetimes[$i]); $dates[] = ($temp[0]." ".$temp[1]." ".$temp[2]." ".$temp[4]); # Breaks date_time into 'Mon Oct 5 2010' format } $dates = array_unique($dates); for ($i = 0; $i < sizeOf($dates); $i++) { echo('<a href="#">'.$dates[$i].'</a><br />'); } 

我正在为其他两个工作正常的字段做类似的事情,但是由于某种原因,这总是会产生一个长度正确的$ dates数组(即:4个唯一的日期,数组的大小为4),但是只有第一个$ dates元素有任何信息。 输出看起来像这样:

 <a href="#">Mon Oct 3 2010</a><br /> <a href="#"></a><br /> <a href="#"></a><br /> <a href="#"></a><br /> 

当我不使用array_unique并仅测试值以检查是否正确加载并解析了所有内容时,该数组将保持应有的状态(“ 2010年10月3日星期一”,“ 2010年10月3日星期一”,“ 2010年10月3日星期一” ”,“ 2010年10月4日星期一”,“ 2010年10月5日星期一”,“ 2010年10月5日星期一”,“ 2010年10月6日星期一”)。

任何线索这是怎么回事?

array_unique保留键,因此您得到的数组具有元素[0],[4]和[6]。

我建议使用

foreach  ($dates as $date) {
  echo('<a href="#">'.$date.'</a><br />'); 
}

如何消除症状,而不是解决症状。

GROUP BY ff_date_time添加到查询的末尾,或将DISTINCT()环绕在ff_date_time中。 然后,您只会在sql结果中获得唯一的日期。

编辑:好的,假设ff_date_time实际上是一个datetime字段,那么为了忽略一天中的时间,请使GROUP BY DATE(ff_date_time)仅使用日期部分,而不使用时间部分。 如果它不是日期时间字段,而只是一个字符串,则必须执行子字符串函数或使用其他人的答案。

使用array_unique之后, var_dump($dates)的输出是什么?

尝试使用foreach而不是for循环:

foreach($dates as $date) {
  echo('<a href="#">'.$date.'</a><br />'); 
}

我宁愿推荐您另一种方法。 使用内置的datetime函数。

$all_dates = array();
foreach($datetimes as $date) {
  $all_dates[] = date('D M j Y', strtotime($date));
}

$unique = array_unique($all_dates);

将唯一数组分配给另一个数组变量。 并使用foreach

$newarr = array();
$newarr = array_unique($dates);
foreach ($newarr as $date) {
  echo('<a href="#">'.$date.'</a><br />' . "\n"); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM