Jump to content
  • 0

Логическое сравнение


kilogram
 Share

Question


<?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)) )

Что это за сравнение? Как расшифровывается строка?

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Выполнять до тех пор, пока ($e=readdir($id)) не будет равна логическому типу false.

=== - это эквивалентность, проверяется и тип данных и содержание элементов, которые сравниваются

!== - данные не должны быть эквивалентны

  • Like 2
Link to comment
Share on other sites

  • 0

Результат readdir($d) присваивается переменной $e, и уже эта переменная сравнивается с булевским false. Ф-ция readdir возвращает false, когда ей больше нечего читать, поэтому если в переменной $e оказалось false — это значит, что все файлы директории уже перебраны, и цикл пора завершать. А до этого момента в эту переменную будет заноситься имя очередного прочитанного файла.

Строгое сравнение нужно потому, что возможен, например, файл с именем "0" (строка из одного нуля). При нестрогом сравнении эта строка оказалась бы "равной" false, и цикл мог бы прерваться, не перебрав все файлы до конца.

  • Like 1
Link to comment
Share on other sites

  • 0

Нет. Такое может быть, если файл будет называться просто "0" (без расширения), а вместо строгого сравнения (!==) использовать нестрогое (!=), которое не учитывает различие типов.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy