Cytat(Początkujący @ 27.08.2010, 16:11:13 )

<?php
$godzina==125;
switch ($godzina) {
case "$godzina>0 and $godzina<14";
break;
case "$godzina>=14 and $godzina<18";
echo "Dobrego popołudnia"; break;
case "$godzina>=18 and $godzina<=24";
break;
default:
echo "Ta godzina to zła godzina"; }
?>
Na początek 1 linijka. == To operator porównania, tym = przypisuje się wartość.
Więc zamiast '==' ma być '='.
Zamiast 'and' lepiej używać operatora '&&'.
I jeszcze jedno, masz:
case "wyrażenie";
a po po sekcji case powinien być dwukropek (:), nie średnik (;).
Mam jeszcze uwagę co do wydajności kodu.
Zamiast cudzysłowów (") należy używać operatora konkatenacji tzn. łączenia tekstu z czymkolwiek innnym(.).
W takim wypadku zamiast:
case "$godzina>0 and $godzina<14":
byłoby:
case $godzina.'>0 and '.$godzina.'<14':
Po prostu w cudzysłowach parser PHP szuka zmiennych, i innych typów danych, a w apostrofach nie szuka nic.