почему выполнение данного кода выводит "false"?
$a = 0;
if($a) echo 'true';
else echo 'false';
ведь NULL и 0 - разные значения.
Спустя 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 написал(а):
вот у нас опрос:
в файле db.txt
теперь
--- если в адресной строке есть votes и = 0, то условие не выполняется...
как же сделать, чтобы оно выполнялось?=)
$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
спасибо! работает! будем разбираться!!!....
спасибо! работает! будем разбираться!!!....
_____________
Рисую на PHP :)