Чтобы понять строку 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);
?>
Кажется, создается какой-то массив, такой, что последняя команда обрабатывает сначала первый запрос, а затем второй.
6 ответов
Это объединенный оператор присваивания. Это объединит или добавит в конец строки. Так:
$a = "Hi!";
$a .= " I";
$a .= " love";
$a .= " Stackru";
$a .= " a";
$a .= " lot";
echo $a; // echos "Hi! I love Stackru 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;";
Таким образом, он добавляет строку в переменную запроса.
Ваш вопрос об операторе .=
, Это сокращение от конкатенации строк с последующим присваиванием.
По назначению операционными операторами
Существует семейство операторов, которые мы можем назвать присваиванием по xyz, где xyz здесь представляет двоичную операцию над операндами одного типа, такими как сложение, вычитание, конкатенация.
Итак, допустим, у нас есть оператор ⊕: int
* int
→ int
Это означает, что требуется пара int
s и производит еще один:
⊕ (a, b) = a ⊕ b
Допустим, мы хотим рассчитать a
⊕ b
и сохранить результаты в переменной a
, Мы можем сделать это:
a = a ⊕ b
Но мы делаем это так часто при кодировании, что был создан оператор для представления строки выше. Вы должны принять это как одну операцию, которая выполняет как операцию and, так и назначение (=
) с одного звонка:
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;"