Intereting Posts
Когда лучше всего использовать оператор switch в PHP? PHP заменить все Обработка данных полевого поля Array mysqli соединение не работает внутри функции? Как использовать специальные символы в имени получателей при использовании почтовой функции PHP Получение удаленной адресной информации PHP по URL-адресу jQuery AJAX загружает JSONP из localhost, но не возвращает данные Как использовать внешний CSS в формате tcpdf pdf Codeigniter AutoLoad DB, но есть возможность проверить, существует ли соединение доктрина 2 много для многих (Продукты – Категории) Проверка строки для недопустимых символов с использованием регулярного выражения Разница между классом и структурой в PHP и Java Как выполнить привязку LDAP SASL к Active Directory с использованием GSS-API в PHP из Windows? cURL – файлы cookie и сеансы Добавьте два часа к дате в течение заданных часов, которые переносятся на следующий таймфрейм

Чтобы понять строку PHP

Что означает следующая строка, в частности оператор .= ?

 $query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;"; 

в коде

 <?php $conn = pg_pconnect("dbname=publisher"); // these statements will be executed as one transaction $query = "UPDATE authors SET author=UPPER(author) WHERE id=1;"; $query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;"; pg_query($conn, $query); ?> 

Кажется, что он делает какой-то массив, так что последняя команда сначала обрабатывает первый запрос, а затем второй.

Это оператор конкатенации присваивания. Он будет конкатенировать или добавить к концу строки. Так:

 $a = "Hi!"; $a .= " I"; $a .= " love"; $a .= " StackOverflow"; $a .= " a"; $a .= " lot"; echo $a; // echos "Hi! I love StackOverflow a lot" 

В твоем случае

 $query = "UPDATE authors SET author=UPPER(author) WHERE id=1;"; $query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;"; echo $query; /* echos "UPDATE authors SET author=UPPER(author) WHERE id=1; UPDATE authors SET author=LOWER(author) WHERE id=2; */ 

Это означает $query = $query . "UPDATE authors SET author=LOWER(author) WHERE id=2;"; $query = $query . "UPDATE authors SET author=LOWER(author) WHERE id=2;";

Поэтому он добавляет строку к переменной запроса.

Ваш вопрос касается оператора .= . Это сокращение от конкатенации строки, за которой следует задание .

Об усвоении операторами операций

Существует семейство операторов, которые мы можем назвать присваиванием через xyz , где xyz здесь представляет двоичную операцию над операндами того же типа, такие как сложение, вычитание, конкатенация.

Итак, допустим, у нас есть оператор ⊕: int * intint , что означает, что он принимает пару int s и создает другое:

⊕ (a, b) = a ⊕ b

Предположим, мы хотим вычислить ⊕ b и сохранить результаты по переменной a . Мы можем это сделать:

a = a ⊕ b

Но мы делаем это так часто, когда кодируем, что оператор был создан для представления строки выше. Вы должны принять его за одну операцию, которая выполняет как операцию ⊕, так и назначение ( = ) с помощью одного вызова:

a ⊕ = b ⇔ a = a ⊕ b.

Некоторые примеры

Итак, в вашем случае у вас есть оператор .= . Теперь, когда вы знаете о назначении операционными операторами, вы можете предположить, что:

 $query = "Hello, " $query .= "World!"; 

такой же как:

 $query = "Hello, " $query = $query . "World!"; 

Видеть?

Теперь еще одно частое использование операторов такого рода – это версии += и -= .

Однако злоупотребление такими операторами может привести к менее читаемому коду (особенно при работе с операторами «низкого уровня», действующими на биты, например).

.= просто означает «добавить». Эта

 $query = "UPDATE authors SET author=UPPER(author) WHERE id=1;"; $query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;"; 

… приводит к

 $query == "UPDATE authors SET author=UPPER(author) WHERE id=1;UPDATE authors SET author=LOWER(author) WHERE id=2;" 

он отделяет обновления; и выполняет оба из них

Объединяет строку … так что $query становится:

 "UPDATE authors SET author=UPPER(author) WHERE id=1;UPDATE authors SET author=LOWER(author) WHERE id=2;"