Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Приоритетность операторов php
 
 автор: demonow   (26.02.2012 в 17:51)   письмо автору
 
 


<?php
while($a=readdir($dir)!==false)
?>

В этом коде сначало выполнится функция, потом идет присвоение и уже потом сравнивается?
-То-есть присвоение имеет выше приоритет?
А в коде типа:

rang(0,rand(0,10));

Сначало выполняются функции, которые стоят в аргументах первичных функций?

  Ответить  
 
 автор: cheops   (26.02.2012 в 17:56)   письмо автору
 
   для: demonow   (26.02.2012 в 17:51)
 

>В этом коде сначало выполнится функция, потом идет присвоение и уже потом сравнивается?
Да.

>Сначало выполняются функции, которые стоят в аргументах первичных функций?
Да. Тут как в математике. Просто смотрите как бы вы сами стали решать уравнение со скобками - так же и интерпретатор будет действовать. Он специально запутывать или назло действовать не будет - наоборот прикладываются все усилия, чтобы лишних пояснений не требовалось.

  Ответить  
 
 автор: demonow   (26.02.2012 в 18:08)   письмо автору
 
   для: cheops   (26.02.2012 в 17:56)
 

Спасибо

  Ответить  
 
 автор: Drago   (26.02.2012 в 20:04)   письмо автору
 
   для: demonow   (26.02.2012 в 17:51)
 

В первом коде, сначала выполнится сравнение, потом присвоение. Поэтому в $a, вместо ожидаемого имени каталога, будет лежать false или true.

  Ответить  
 
 автор: cheops   (26.02.2012 в 20:06)   письмо автору
 
   для: Drago   (26.02.2012 в 20:04)
 

Только наоборот, сначала осуществляется присвоение, которое возвращает либо имя каталога, либо false, а потом с этим результатом осуществляется сравнение !==, которое уже выдает строго либо true, либо false. Иначе просто невозможно выполнить сравнение, если аргументы оператора !== не будут вычислены.

  Ответить  
 
 автор: Sfinks   (26.02.2012 в 20:28)   письмо автору
 
   для: cheops   (26.02.2012 в 20:06)
 

Поэтому лучше не гадать, а заключать в скобки
while( ($a=readdir($dir)) !== false )

  Ответить  
 
 автор: Drago   (26.02.2012 в 21:02)   письмо автору
 
   для: cheops   (26.02.2012 в 20:06)
 

У сравнения приоритет выше. Как может присвоение выполнятся вначале?

  Ответить  
 
 автор: cheops   (26.02.2012 в 21:11)   письмо автору
 
   для: Drago   (26.02.2012 в 21:02)
 

Все верно, это demonow меня попутал :))), конечно же, если использовать выражение
while($a=readdir($dir)!==false)
без скобок, то $a получил набор 1, а вовсе не имена файлов, почему скобки и важны. Вообще, конечно, я тут к Sfinks присоединюсь, лучше всегда использовать скобки, особенно тогда, когда нет устойчивых правил из арифметики...

  Ответить  
 
 автор: demonow   (26.02.2012 в 22:36)   письмо автору
 
   для: Drago   (26.02.2012 в 20:04)
 

Но впринципе даже если там будет не имя каталога а логическое значение, для правильной роботы это роли ведь не сильно играет, ведь while проверяет на истинность и походу не важно(в данном примере) что цикл завершиться будь там имя каталога или логическое значение.

  Ответить  
 
 автор: cheops   (26.02.2012 в 22:39)   письмо автору
 
   для: demonow   (26.02.2012 в 22:36)
 

Если вам нужно имя файла, то в $a его не будет (там будет 1), а взять его больше не от куда. Чтобы было имя файла, нужно использовать код Sfinks.

  Ответить  
 
 автор: demonow   (26.02.2012 в 22:41)   письмо автору
 
   для: cheops   (26.02.2012 в 22:39)
 

Не, меня как раз интересовало насчет операторов, и когда выйдет цикл, но я уже розобрался спасибо всем.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования