Логические операции - need help

Klaus

SEO Cthulhu
Логические операции - need help

Разъясните, пожалуйста, почему именно так:

работает
PHP:
while ($row = mysql_fetch_row($res) and $i < 10)
а так не работает
PHP:
while ($row = mysql_fetch_row($res) && $i < 10)
разве есть отличия между and и && ?

если убрать выражение в скобки, то все пучком
PHP:
while (( $row = mysql_fetch_row($res)) && $i < 10)
я понимаю, что $row = mysql_fetch_row($res) не есть операция сравнения, .... почему тогда работает and?

Спасибо.
 

Altex

Новичок
Прочитай здесь
http://www.php.net/manual/en/language.operators.php#language.operators.precedence

-~{}~ 14.02.04 11:34:

для ленивых табличка вот ->
Код:
Associativity	Operators
---------------------------------
non-associative	new
right	[
right	! ~ ++ -- (int) (float) (string) (array) (object) @
left	* / %
left	+ - .
left	<< >>
non-associative	< <= > >=
non-associative	== != === !==
left	&
left	^
left	|
left	&&
left	||
left	? :
right	= += -= *= /= .= %= &= |= ^= <<= >>=
right	print
left	and
left	xor
left	or
left	,
-~{}~ 14.02.04 11:36:

отсюда хорошо видно, что сначала выполняется операция && затем = и потом and
 

Фанат

oncle terrible
Команда форума
чудик!
в mysql есть такой оператор LIMIT
специально, чтобы не заниматься такими извращениями
 

Klaus

SEO Cthulhu
Altex

спасибо!

объясни, пожалуйста, на пальцах :)

у нас "and" имеет более низкий приоритет чем "&&", следовательно операция присваивания в случае "and" проходит первой, а в случае "&&" присваивание без скобок вообще не имеет смысла, так?

-~{}~ 14.02.04 10:47:

Фанат

да, я знаю, но в данном случае мне надо перебрать сотню сайтов в поиске информации, она может быть не на всех сайтах, а мне нужно 10 сайтов с инфой, я правильно поступил?
т.е. $i++ только тогда, когда информация найдена
 

Фанат

oncle terrible
Команда форума
у нас "and" имеет более низкий приоритет, чем операция присваивания!!!

-~{}~ 14.02.04 10:49:

нет неправильно.
база нам специально дана для того, чтобы все перебирать за нас.
 

Klaus

SEO Cthulhu
Фанат
т.е. суть я понял правильно? c учетом твоего замечания?

подскажи еще, пожалуйста, для чистоты кода, как лучше писать, and или &&(со скобками)

-~{}~ 14.02.04 10:54:

Фанат
я коннекчусь в цикле к каждому сайту в поисках инфы, пока не наберу 10 сайтов с инфой, при чем тут база
 

Klaus

SEO Cthulhu
Фанат и Altex
спасибо!

еще такой вопрос, если не затруднит, никак не могу по ману понять, что значит левая и правая ассоциативность?
 

Crazy

Developer
Правая: print print 2;

Выполняется "print 2", который печатает "2" и возвращает 1, а затем печатается эта единица.

Левая: $x = 10 / 5 / 2

Вначала выполняется "10 / 5", а затем результат делится на 2.
 
Сверху