2011-06-05 39 views
1

我有一个字段以下值从MySQL数据库确定在阵列中的所有值都等于

$rec1="4/1 @ 4p, 4/7 @ 4p, 4/8 @ 4p, 4/14 @ 4p, 4/15 @ 4p, 4/22 @ 4p, 4/28 @ 4p "; 
$rec2="4/1 @ 4p, 4/7 @ 7p, 4/8 @ 4p, 4/14 @ 4p, 4/15 @ 4p, 4/22 @ 4p, 4/28 @ 4p "; 

我需要确定所有的时间值是否相同,如果是只返回单个时间值,否则返回整个字符串。 在上面的两个记录中,我希望返回值为 - $rec1=4p(所有时间都相等,不关心日期) $rec2= unchanged从上面的原始$rec2以来,因为至少有一个时间值不同。

+2

,而不是把所有的信息合并到一列,你应该创建相关型号的新表记录并使用datetimestamp或至少一个mysql [dattime格式](http://dev.mysql.com/doc/refman/5.1/en/datetime.html) – mcgrailm 2011-06-05 07:34:32

回答

0

二者必选其一array_uniquearray_count_values

1

这给一个镜头:

$rec1="4/1 @ 4p, 4/7 @ 4p, 4/8 @ 4p, 4/14 @ 4p, 4/15 @ 4p, 4/22 @ 4p, 4/28 @ 4p "; 
$rec2="4/1 @ 4p, 4/7 @ 7p, 4/8 @ 4p, 4/14 @ 4p, 4/15 @ 4p, 4/22 @ 4p, 4/28 @ 4p "; 

function wtf($over) { 
    $split = split(",",$over); 
    $times = array(); 
    foreach ($split as $schedule) { 
     $parts = split("@",$schedule); 
     $times[] = trim($parts[1]); 
    } 
    $times = array_unique($times); 
    if (count($times) == 1) return $times[0]; 
    return $over; 
} 

echo wtf($rec1); 
echo "<BR>"; 
echo wtf($rec2); 

经过验证的工作:http://gfosco.kodingen.com/6241557.php

相关问题