What does the following line mean, particularly the operator .=
?
$query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;";
in the code
<?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);
?>
It seems to make some sort of array such that the last command processes first the first query and then the second.
This is the concatenate assignment operator. It will concatenate or add to the end of the string. So:
In your case
it separates the updates with ; and executes both of them
Your question is about the operator
.=
. It is a shorthand to a string concatenation followed by an assignment.On assigment by operation operators
There is a family of operators we can call assignment by xyz, where xyz here represents a binary operation on operands of the same type, such as addition, subtraction, concatenation.
So, let's say we have an operator ⊕:
int
*int
→int
, meaning that it takes a pair ofint
s and produces another one:⊕(a, b) = a ⊕ b
Let's say we want to calculate
a
⊕b
and store the results on the variablea
. We can do so by:a = a ⊕ b
But we do this so often when coding that an operator was created to represent the line above. You should take it as a single operation that does both the ⊕ operation and the assignment (
=
) with a single call:a ⊕= b ⇔ a = a ⊕ b.
Some examples
So, in your case, you have a
.=
operator. Now that you know about assignment by operation operators, you can guess that:is the same as:
See?
Now, another frequent use of this kind operators are the
+=
and-=
versions.However, abuse of this kinds of operators may lead to less readable code (especially when dealing with "low level" operators acting on bits, for example).
Concatenates the string... so
$query
becomes:.=
simply means "append". This…results in
It means
$query = $query . "UPDATE authors SET author=LOWER(author) WHERE id=2;";
So it appends the String to the Query Variable.