[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Логическое сравнение
kilogram

<?php
function
sos($f1,$f2){
if(is_dir($f1) && !is_dir($f2)) return -1;
if(!is_dir($f1) && is_dir($f2)) return 1;
if($f1<$f2) return -1; elseif ($f1>$f2) return 1;
else return 0;
}
$d = opendir('.');
while(false !== ($e=readdir($d)) )
$files[$e] = filesize($e);
uksort($files,"sos");
print_r($files);
?>


НЕ понятно вот это место: while(false !== ($e=readdir($d)) )
Что это за сравнение? Как расшифровывается строка?




Спустя 2 минуты, 22 секунды (27.04.2012 - 21:25) inpost написал(а):
while($e = readdir($d))

Вот так расшифровывается!

Спустя 7 минут, 2 секунды (27.04.2012 - 21:32) kilogram написал(а):
Я про вот это что такое за сравнение false !==

Спустя 1 час, 21 минута, 44 секунды (27.04.2012 - 22:53) sergeiss написал(а):

Спустя 7 минут, 24 секунды (27.04.2012 - 23:01) kilogram написал(а):
Цитата
!== - данные не должны быть эквивалентны


while(false !== ($e=readdir($d)) )

Если $e не равно типу бул, значению фолс. А зачем здесь проверять на тип?
Какие элементы с какими проверяются?

Спустя 46 минут, 1 секунда (27.04.2012 - 23:47) inpost написал(а):
Я же сказал, что $e !== false, не равна она после присваивания ей значений внутри скобок.

Спустя 7 часов, 7 минут, 19 секунд (28.04.2012 - 06:54) sergeiss написал(а):
Цитата (kilogram @ 28.04.2012 - 01:01)
А зачем здесь проверять на тип?

Для того, чтобы не попасть на грабли. Потому что при сравнении != или == будет проводиться "приведение типов", а при сравнении !=== и === "приведения типов" не будет, а будут сравниваться и величины, и типы.

Поясняю на примере.
$a=0;
$b=false;

if( $a == $b ) // сравнение будет "истиной", т.к. при "0" при приведении к логическому типу станет "false"
{ .... }

if( $a === $b ) // сравнение будет "ложь", т.к. данные разных типов!!!
{ ... }


Некоторые функции могут вернуть false как индикатор ошибки и "ноль" как число, результат какой-то обработки данных. Для различения этих состояний такие сравнения как раз и нужны.
Быстрый ответ:

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