Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der PHP-Syntaxregeln

Detaillierte Erläuterung der PHP-Syntaxregeln

巴扎黑
巴扎黑Original
2016-11-24 13:16:151040Durchsuche
  1. Einfache Syntaxregeln (Variablennamen durch geschweifte Klammern trennen, anwendbar auf alle PHP-Versionen):

$a = 'flower';
echo "She received some $as";
// 无效;字母s会被当成有效的变量名组成元素,但是这里的变量是$a
echo "She received some ${a}s"; // 有效
echo "She received some {$a}s"; // 有效;推荐的使用方法

Was wir ausdrücken möchten, ist „Sie erhält „Zu einigen Blumen“, das Wort „Blume“ im Kontext sollte im Plural stehen (d. h. S sollte danach hinzugefügt werden), aber wenn die Variable in keiner Weise definiert ist, tritt die erste Echosituation auf . Offensichtlich möchten wir, dass die Ausgabe $a und nicht $as ist. Wie verarbeiten wir diese Ausgabe normalerweise?

echo "She received some $a"."s"; 
echo "She received some ".$a."s";

Diese beiden üblichen Schreibweisen sollten weniger prägnant und klar sein als die Schreibweise mit geschweiften Klammern, oder?
Hinweis: Unabhängig davon, ob { vor oder nach $ steht, werden geschweifte Klammern nur dann als Trennzeichen betrachtet, wenn die beiden unmittelbar benachbart sind. Fügen Sie keine Leerzeichen zwischen ihnen ein, da sie sonst als gewöhnliche geschweifte Klammern behandelt werden

echo "She received some { $a}s"; 
// 输出的结果为:She received some { flower}s

2. Komplexe Syntaxregeln (verwenden Sie geschweifte Klammern, um Ausdrücke usw. zu definieren, die mit PHP4+ verwendet werden):

echo "有效的写法: {$arr[4][3]}";
// 有效;界定多维数组
echo "有效的写法: {$arr['foo'][3]}";
// 有效;当在字符串中使用多维数组时,一定要用括号将它括起来
echo "有效的写法: {$this->width}00"; 
// 有效;如果不界定的话,就会变成 $this->width00
echo "有效的写法: {$this->value[3]->name}";  
// 有效;该例演示了界定链式调用
echo "有效的写法: $name: {${$name}}"; 
// 有效;该例演示的效果实际上是一个可变变量
echo "有效的写法: {${getName()}}"; 
// 有效;该例演示了将函数的返回值作为变量名
echo "有效的下发: {${$this->getName()}}"; 
// 有效;该例演示了将函数的返回值作为变量名
注意1:echo "这样写有效吗: {getName()}";输出结果为:'这样写有效吗: 
{getName()}'。因为里面不含$,所以花括号不会被当作界定符
注意2:echo "这样写有效吗:{$arr[foo][3]}"; 在回答这个问题前我们先来进行一个实验:
error_reporting(E_ALL);
$arr = array('a', 'b', 'c', 'd'=>'e');
echo "This is $arr[d]";
// 我们发现这样写是没有问题的,那么我们像下面这样写呢?
echo $arr[d];

Ein Fehler wie dieser ist aufgetreten:
Hinweis: Verwendung der undefinierten Konstante d – angenommen „d“
Hinweis: Verwendung der undefinierten Konstante d – angenommen „d“
Dann, wenn wir den Code ändern Wie folgt:

error_reporting(E_ALL);
$arr = array('a', 'b', 'c', 'd'=>'e');
define('f', 'd');
echo $arr[f];

Wir stellen fest, dass es dieses Mal kein Problem gibt. Es ist ersichtlich, dass es kein Problem darstellt, wenn der Index des Arrays in der Zeichenfolge nicht in einfache Anführungszeichen gesetzt wird. Wenn diese Schreibmethode jedoch nicht in der Zeichenfolge vorkommt, wird ein Fehler gemeldet und für {$arr[foo ][3]} im String-Parsing basiert auf dem Non-String-Parsing. Daher ist es falsch, nur geschweifte Klammern hinzuzufügen, um das Array in der Zeichenfolge zu begrenzen, ohne dem Index einfache Anführungszeichen hinzuzufügen. Da das Programm den Index ohne einfache Anführungszeichen als Konstante analysiert, führt dies zu einem Fehler. Die richtige Schreibweise sollte sein:
echo „Effektive Schreibweise: {$arr['foo'][3]}“
Eine besondere Erinnerung: echo „Das ist $arr[d]“; Diese Schreibweise kann zwar vom Programm analysiert werden, ist jedoch auf den Fall beschränkt, dass das Array ein eindimensionales Array ist. Die strenge Schreibmethode sollte sein: echo „Das ist {$arr['d‘]}“; Mein Schüler hat einmal mit mir über diesen Punkt gestritten. Er sagte: Da die vorherige Schreibmethode Ergebnisse liefern kann, warum müssen wir sie verwenden? Was ist mit der letzteren Schreibweise? Lassen Sie uns also den vorherigen Code weiter ändern

error_reporting(E_ALL);
$arr = array('a', 'b', 'c', 
'd'=>array('e'=>'f')
);
echo "This is $arr[d][e]";

Kann er immer noch korrekt analysiert werden? Ich möchte Ihnen nur sagen, dass das Hinzufügen von geschweiften Klammern unbedingt erforderlich ist. Wenn Sie nicht mein Schüler sind, kann ich natürlich nicht so viel kontrollieren ...

Hinweis 3:

error_reporting(E_ALL);  
$arr = array('a', 'b', 'c', 'd');  
echo "This is {$arr[2]} <br />";  
echo "This is {$arr[&#39;2&#39;]} <br />";


Führen Sie das aus obiger Code. Das Ergebnis ist das gleiche, warum ist das so? Ich kann Ihnen nur sagen, dass PHP eine schwach typisierte Sprache ist. Was eine schwach typisierte Sprache ist, werde ich hier nicht näher sagen. Googeln Sie es selbst. Abgesehen davon: Wo sind die spezifischen Anwendungen, die die Vorteile dieser syntaktischen Regeln am besten widerspiegeln? ----SQL-Anweisung

Java-Code

// 示例一:  
$SQL1 = "select * from table where id={$_GET[&#39;id&#39;]}";  
// 示例二:  
$SQL2 = "select * from table where id={$this->id}";


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-ReferenzaufrufeNächster Artikel:PHP-Referenzaufrufe