2011-06-05 5 views
1

Je les valeurs suivantes dans un seul champ à partir d'une base de données mysqldéterminer si toutes les valeurs de tableau sont égales

$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 "; 

J'ai besoin de déterminer si toutes les valeurs de temps sont les mêmes et si oui juste retour le valeur unique, sinon renvoie la chaîne entière. Dans deux enregistrements ci-dessus je voudrais que la valeur retournée soit - $rec1=4p (tous les temps étaient égaux, ne se soucient pas des dates) $rec2= unchanged de l'original $rec2 ci-dessus car au moins une des valeurs de temps est différente.

+2

plutôt que de mettre toutes ces informations dans une colonne, vous devez créer une nouvelle table de releated enregistrements et également utiliser datetimestamp ou au moins un mysql [format de date] (http://dev.mysql.com/doc/refman/5.1/fr/datetime.html) – mcgrailm

Répondre

0

Utilisez soit array_unique ou array_count_values

1

Donnez ce un coup:

$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); 

Verified travaillant à: http://gfosco.kodingen.com/6241557.php

Questions connexes