Home >Backend Development >PHP Tutorial >The difference between single quotes and double quotes in PHP, php quotes double quotes_PHP tutorial
1. Define strings
In PHP, single quotes can be used to define strings, Double quotes can also be used. However, the same single or double quotation marks must be used to define the string. For example, 'Hello' and 'Hello' are illegal string definitions.
When defining a string, only one kind of quotation mark is considered as the delimiter, that is, single quotation mark or double quotation mark. Thus, if a string begins with a double quote, only the double quote is parsed by the parser. This way, you can include any other character, even single quotes, within the double-quoted string. The following quote strings are legal:
Php code
$s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';
$s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';
And the string "Why doesn't "this" work?" will be divided into three paragraphs. If you want to express double quotes in this string, you can use the escape character "" (backslash) to become "Why doesn't "this" work?"
2. Single and double quotation marks in string variables
PHP allows us to directly include string variables in double quotation mark strings. We can find that the processing results of the following two strings are Same.
$full_name = $first_name . ' ' . $last_name;
$full_name = "$first_name $last_name";
Single quote string and double quote string in PHP The processing is not the same. The contents of a double-quoted string can be interpreted and replaced, while the contents of a single-quoted string are always considered ordinary characters. For example:
Php code
$foo = 2;
echo "foo is $foo"; // Print result: foo is 2
echo 'foo is $foo'; // Print result: foo is $foo
echo "foo is $foon"; // Print result: foo is 2 (with newline)
echo ' foo is $foon'; // Print result: foo is $foon
$foo = 2;
echo "foo is $foo"; // Print result: foo is 2
echo 'foo is $foo'; // Print result: foo is $foo
echo "foo is $foon"; // Print result: foo is 2 (with newline)
echo 'foo is $foon'; // Print result: foo is $foon
As you can see, even the backslash within the single quote string has lost its extended meaning ( Except inserting backslash \ and inserting single quote '). Therefore, you should use double quotes when you want to perform variable substitution and include escape sequences such as n (newline) in a string. Single quote strings can be used anywhere else. The processing speed of using single quote strings in scripts will be faster, because the PHP parser processes single quote strings in a relatively simple way, while the processing of double quotes also needs to be parsed inside the string. It is therefore more complex and therefore slightly slower to process.
Some problems may arise when referencing complex combinations of variables in strings. The following code will work fine:
Php code
echo "value = $foo ";
echo "value = $a[$i]";
echo "value = $foo";
echo "value = $a[$i] ";
The following code cannot get the results we want:
echo "value = $a[$i][$j]"; //We hope to print a two-dimensional array An element of $a.
To avoid these potential problems in using strings, we usually separate complex variables from strings, like this: echo 'value = ' . $a[$i][$j ];//Use dots (.) to connect strings
Another way is to enclose complex variables in curly braces, so that the syntax analyzer can correctly identify them:
echo " value = {$a[$i][$j]}" //Print an element of the two-dimensional array $a
In this way, a new problem arises. When we want to quote the curly brace character itself in a string, we need to remember to use the escape character:
Php code
$var = 3;
echo " value = {$var}"; // Print result "value = 3"
echo "value = {$var}"; // Print result "value = {3}"
$var = 3;
echo "value = {$var}"; // Print result "value = 3"
echo "value = {$var}"; // Print result "value = {3}"
3. In SQL statements
This is a problem that is often encountered. The SQL statement inserted into the database uses single quotes to define the string. If To insert a string containing single quotes into the database, this SQL statement will cause an error.
For example: $sql="insert into userinfo (username,password) Values('O'Kefee','123456')"
At this time, one of the processing methods is to use SQL Add the escape character backslash to the statement,
, that is:...Values('O'Kefee',...
Of course, you can also use the function addslashes(). The function of this function is to add escape characters,
that is: $s = addslashes("O'Kefee") ...Values('".$s."' ,...
Another method is to set the magic-quotes option in php.ini. If this option is turned on, if there are single quotes in the information submitted through the form, they will be automatically escaped. symbol. So there is no need to use other functions.
Addition: This starts with the role of double quotes and single quotes: The fields in double quotes will be interpreted by the compiler and then output as HTML code, but There is no need to explain what is inside the single quotation marks.
For example:
$abc='I love u';
echo $abc //The result is: I love. u
echo '$abc' //The result is: $abc
echo "$abc" //The result is: I love u
So in the database When assigning values in SQL statements, double quotes should also be used. SQL="select a,b,c from..." However, there will be single quotes in the SQL statement to quote the field names
For example: select * from table where user='abc';
The SQL statement here can be written directly as SQL="select * from table where user='abc'"
But if it is like the following:
$user='abc';
SQL1="select * from table where user=' ".$user." ' "; Compare
SQL2="select * from table where user=' abc ' "
I added a little more space between the single quotes and double quotes, I hope you can see it clearly.
That is, replace 'abc' with ' ".$user."' is all within a single quote. It just splits the entire SQL string. SQL1 can be decomposed into the following three parts: "select * from table where user=' "
2: $user
3: " ' "
Strings are connected with ., so you can understand.
http://www.bkjia.com/PHPjc/1133416.html