To understand a line of PHP [duplicate]

2020-02-15 05:04发布

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.

标签: php
6条回答
兄弟一词,经得起流年.
2楼-- · 2020-02-15 05:14

This is the concatenate assignment operator. It will concatenate or add to the end of the string. So:

$a = "Hi!";

$a .= " I";
$a .= " love";
$a .= " StackOverflow";
$a .= " a";
$a .= " lot";

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

In your case

$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; */
查看更多
地球回转人心会变
3楼-- · 2020-02-15 05:14

it separates the updates with ; and executes both of them

查看更多
Ridiculous、
4楼-- · 2020-02-15 05:15

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*intint, meaning that it takes a pair of ints and produces another one:

⊕(a, b) = a ⊕ b

Let's say we want to calculate ab and store the results on the variable a. 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:

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

is the same as:

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

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).

查看更多
Rolldiameter
5楼-- · 2020-02-15 05:22

Concatenates the string... so $query becomes:

"UPDATE authors SET author=UPPER(author) WHERE id=1;UPDATE authors SET author=LOWER(author) WHERE id=2;"
查看更多
不美不萌又怎样
6楼-- · 2020-02-15 05:35

.= simply means "append". This

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

…results in

$query == "UPDATE authors SET author=UPPER(author) WHERE id=1;UPDATE authors SET author=LOWER(author) WHERE id=2;"
查看更多
萌系小妹纸
7楼-- · 2020-02-15 05:37

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

So it appends the String to the Query Variable.

查看更多
登录 后发表回答