Pracuję nad pewnym kodem PHP, który wydaje się działać logicznie

$tod = date("G");
if($tod >= 5 && $tod <= 11)      { $work = "Morning's"; }
elseif($tod >= 12 && $tod <= 17) { $work = "Afternoon's"; }
else                               $work = "Evening's";

$dw = date( "l");

if($work = "Morning's")       { $pre = "Morning"; }
elseif($work = "Afternoon's") { $pre = "Afternoon"; }
else                            $pre = "Evening";

Z jakiegoś powodu, jeśli próbuję zwiększyć lub ustawić zmienną $tod na coś w każdym zakresie, kiedy wywołuję echo $work, zawsze zwraca to „Morning's” bez względu na ustawienie $tod. Czy coś jest nie tak z moimi stwierdzeniami if..elseif..else? Podczas ładowania strony nie pojawiają się żadne błędy.

Dzięki za pomoc

1
Jay Lane 27 wrzesień 2012, 19:40

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego, o którym zapomniałeś „= na dwa, jeśli

  $tod = date("G");
    if($tod >= 5 && $tod <= 11) {$work = "Morning's";}
    elseif($tod >= 12 && $tod <= 17) {$work = "Afternoon's";}
    else $work = "Evening's";
    $dw = date( "l");
    if($work == "Morning's"){$pre = "Morning";}
    elseif($work == "Afternoon's"){$pre = "Afternoon";}
    else $pre = "Evening";
0
Alessandro Minoccheri 27 wrzesień 2012, 19:42

Aby to trochę skrócić (i poprawić pisownię: liczba mnoga jest bez '):

$pre = "Evening";
in_array( date( "G" ), range( 5, 11 ) )  AND $pre  = "Morning";
in_array( date( "G" ), range( 12, 17 ) ) AND $pre = "Afternoon";
$work = "{$pre}s";
0
kaiser 27 wrzesień 2012, 20:21