[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: почему (0 == NULL) ?
Crash2007
hi!=)
почему выполнение данного кода выводит "false"?
$a = 0;
if($a) echo 'true';
else echo 'false';

ведь NULL и 0 - разные значения. huh.gif



Спустя 28 минут, 19 секунд (10.10.2010 - 03:34) aH6y написал(а):
0 - это и есть ничего.

Спустя 34 минуты, 51 секунда (10.10.2010 - 04:09) arvitaly написал(а):
Цитата
почему выполнение данного кода выводит "false"?


Потому что эта $a приводится к типу boolean - для того чтобы вычислить условие.
И после приведения

var_dump((boolean)0);


мы получаем false. То же самое с остальными типами.


Цитата
ведь NULL и 0 - разные значения.

Непонятно причем здесь NULL.

Но поясню еще одну вещь сразу уж

При обычном сравнении == происходит приведение типов и сравнение после, поэтому 0==NULL есть true.

Этого можно избежать при помощи оператора эквивалентности ===, он не использует приведение типов поэтому

0===NULL есть false

Спустя 12 минут, 48 секунд (10.10.2010 - 04:22) Crash2007 написал(а):
вот у нас опрос:
$filename = 'db.txt';
$file = file_get_contents($filename);
list($rows,$votes) = explode('.', $file);
$votes = explode(',', $votes);

echo '<form method="get">';
for($i = 0; $i < $rows; $i++) {
echo '<input type="radio" name="votes" value="'.$i.'">';
}
echo '<input type="submit" name="submit" value="ok">';
echo '</form>';

if($_REQUEST['submit'] and !empty($_REQUEST['votes'])) {
for($i = 0; $i < $rows; $i++) {
if($i == $_REQUEST['votes'])
$votes[$i] += 1;
}
$str = $rows.'.'.implode(',', $votes);
$fp = fopen($filename, 'w');
fwrite($fp,$str);
fclose($fp);
}

$quantity = array_sum($votes);
for($i = 0; $i < count($votes); $i++) {
$percent[$i] = round((100 / $quantity) * $votes[$i], 2);
}

print_r($percent);

в файле db.txt
5.1,1,1,1,1

теперь
if($_REQUEST['submit'] and !empty($_REQUEST['votes'])) { 
...
}

--- если в адресной строке есть votes и = 0, то условие не выполняется...
как же сделать, чтобы оно выполнялось?=)

Спустя 1 час, 29 минут, 44 секунды (10.10.2010 - 05:52) arvitaly написал(а):
if($_REQUEST['submit']=="ok" and (isset($_REQUEST['votes']) ? $_REQUEST['votes']>-1 : false)  ) {


Моск спит, но это будет работать

Спустя 2 часа, 27 минут, 5 секунд (10.10.2010 - 08:19) Michael написал(а):
да просто вместо !empty использовать isset, т.к. empty нули не пропускает(смотри хэлп - что не пропускает).

Спустя 27 минут, 20 секунд (10.10.2010 - 08:46) DmitryOpalev написал(а):
А почему нельзя сделать $a = "0";
Тогда это будет восприниматься как число.

Спустя 3 часа, 50 минут, 46 секунд (10.10.2010 - 12:37) Crash2007 написал(а):
arvitaly
спасибо! работает! будем разбираться!!!.... laugh.gif


_____________
Рисую на PHP :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.