PHP - вопрос про ноль

V
На сайте с 03.08.2009
Offline
18
583

Есть следующий кусок кода:

if ($commrating) $commrating = round($commrating); else $commrating = 0;
switch($commrating) {
case ($commrating > 0):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
case ($commrating < 0):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
case($commrating == 0):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
}

переменная $commrating берется из SQL.

Не могу понять почему при значении $commrating = 0 срабатывает первое условие, т.е. ($commrating > 0).

Очень надеюсь на вашу помощь...

dkameleon
На сайте с 09.12.2005
Offline
386
#1

я почему-тор в упор не вижу разницы в ваших кейсах.

Дизайн интерьера (http://balabukha.com/)
V
На сайте с 03.08.2009
Offline
18
#2
dkameleon:
я почему-тор в упор не вижу разницы в ваших кейсах.

стили для TD я опустил, но это не влияет на конечный результат

Prior
На сайте с 03.03.2008
Offline
184
#3

Используйте условные операторы в данном случае.

Срабатывает первое условие т.к. 0>0=FALSE т.е. результат сравнения - ноль, поэтому этот case срабатывает.

Ответы на вопрос - https://answers.net.pl
V
На сайте с 03.08.2009
Offline
18
#4

Спасибо!!!!! Работает:

if ($commrating > 0) {

echo $commrating." больше, чем 0<br>";
} elseif ($commrating < 0) {
echo $commrating." меньше 0<br>";
} else {
echo $commrating." равно 0<br>";
}
alexandr_nv
На сайте с 23.04.2009
Offline
39
#5
Prior:
Используйте условные операторы в данном случае.

или в switch() вместо переменной написать true


switch(true) {
case ($commrating > 0):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
case ($commrating < 0):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
case($commrating == 0):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
}
P
На сайте с 16.06.2010
Offline
2
#6

Вообще, предпочтительнее использовать if else, нежели case. Ну, это так, к общему сведению.

Пишу PHP-скрипты :-) (/ru/forum/511256)
FeoOne
На сайте с 27.12.2008
Offline
32
#7

ЛОЛ!


switch($commrating) {
case(0):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
case (1):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
case(2):
$commrating = '<td><span>'.$commrating.'</span></td>';
break;
case(etc): ... break;
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий