Вопрос по синтаксису PHP. Помогите понять...

iguania
На сайте с 10.12.2010
Offline
72
711

Добрый вечер, уважаемые.

Столкнуля на просторах всемирной паутины с таким кодом:

fwrite($socket, $data);

$answer = fread($socket, 1);
$remains = socket_get_status($socket);
if($remains --> 0)
$answer .= fread($socket, $remains['unread_bytes']);

, где $socket, $data, соответственно, идентификатор сокета и запрос, передаваемый в сокет

Отправляем в сокет запрос, читаем один байт ответа, проверяем статус, а затем по какому-то условию дочитываем остальное из буфера сокета.

Так вот, вопрос собственно вот в чем: не понятно, что это за условие такое " --> ". Расскажите, пожалуйста (если можно, то подробно), что это значит. Ранее не сталкивался с таким синтаксисом в этом языке.

Заранее всем ответившим спасибо.

Все всегда заканчивается хорошо. Если все закончилось плохо, значит, это еще не конец…
SS
На сайте с 28.05.2008
Offline
142
#1

Судя по всему имелось в виду следующее

if($remains-- > 0)

То есть уменьшение переменной $remains (постдекремент) и сравнение с нулем.

ДП
На сайте с 23.11.2009
Offline
203
#2

Я тоже так подумал, но в $remains массив по идее должен оказаться, зачем к массиву применять декремент - я не знаю.

Вообще это из скрипта проверки существования email - http://freehabr.ru/blog/php/1434.html

Думается, там же можно и спросить, что автор хотел этим сказать.

В мане php сказано, что массив всегда будет больше немассива.

R
На сайте с 17.11.2011
Offline
22
#3

да, это массив.

Че за выражение и че оно делает действительно интересно.

Еще меня вводит в ступор ">>" и "<<"

И вот такое

"if (funct1()&& &aaa &&funct2()){;}"

домашняя страница - google.com.ua
n0name
На сайте с 22.12.2006
Offline
54
#4

Скорее всего, один написал, а все остальные скопировали.

Это не что иное, как постдекремент и сравнение ($remains-- > 0);

Rommer, ">>" сдвигает все биты на n позиций левее, "<<" правее

Пример:

101100101 >> 2 = 001011001

101100101 >> 4 = 000010110

101100101 << 2 = 10110010100

"if (funct1()&& &aaa &&funct2()){;}"

В записи ошибка.

Сервис сравнения цена на VPS (http://vpska.com/)
R
На сайте с 17.11.2011
Offline
22
#5
n0name:
Скорее всего, один написал, а все остальные скопировали.
Это не что иное, как постдекремент и сравнение ($remains-- > 0);

Разве с массивами такие операции возможны?


Rommer, ">>" сдвигает все биты на n позиций левее, "<<" правее
Пример:
101100101 >> 2 = 001011001
101100101 >> 4 = 000010110
101100101 << 2 = 10110010100

"if (funct1()&& &aaa &&funct2()){;}"

В записи ошибка.

понял, спасибо. :)

n0name
На сайте с 22.12.2006
Offline
54
#6
rommer:
Разве с массивами такие операции возможны?

Интерпретатор ошибку не выдаёт — значит возможно :)

Хотя в реальности массив точно таким же остаётся.

ДП
На сайте с 23.11.2009
Offline
203
#7

Просто это условие - с массивом - всегда будет true. В доке на php.net написано что массив всегда больше любого аргумента, кроме массива. Если сравниваются с массивом - то может оказаться меньше.

I
На сайте с 23.12.2010
Offline
25
#8
Дикий пионер:
Просто это условие - с массивом - всегда будет true. В доке на php.net написано что массив всегда больше любого аргумента, кроме массива. Если сравниваются с массивом - то может оказаться меньше.

Он еще null может быть, если мне память не изменяет

ДП
На сайте с 23.11.2009
Offline
203
#9

Я не пользовался никогда, нов доке написано, что это алиас вот этой фнукции - http://www.php.net/manual/en/function.stream-get-meta-data.php

там про null вроде нет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий