1.簡單句法規則(用花括號界定變數名,適用於php所有版本,是php系統設定):
$a = 'flower';
echo "she received some $as";
// 無效;字母s會被當成有效的變數名組成元素,但是這裡的變數是$a
echo "she received some $s"; // 有效
echo "she received some s"; // 有效;推薦的使用方法
我們希望表達的是」她收到一些花「,語境中的flower應該採用複數形式(也就是說應該在後面加上s),但是如果不對變數做任何界定的話,就會出現第乙個echo的情況。顯然我們希望輸出的是$a而不是$as。那麼我們通常是怎麼來處理這個輸出的呢?
echo "she received some $a"."s";
echo "she received some ".$a."s";
// 這兩種習慣性的寫法應該沒有加花括號的寫法簡潔明瞭吧?
注意:不管s";
// 輸出的結果為:she received some s
2.複雜句法規則(用花括號界定表示式等,使用與php4+):
echo "有效的寫法: ";
// 有效;界定多維陣列
echo "有效的寫法: ";
// 有效;當在字串中使用多維陣列時,一定要用括號將它括起來
echo "有效的寫法: 00";
// 有效;如果不界定的話,就會變成 $this->width00
echo "有效的寫法: ";
// 有效;該例演示了界定鏈式呼叫
echo "有效的寫法: $name: }";
// 有效;該例演示的效果實際上是乙個可變變數
echo "有效的寫法: }";
// 有效;該例演示了將函式的返回值作為變數名
echo "有效的下發: }";
// 有效;該例演示了將函式的返回值作為變數名
注意1:echo "這樣寫有效嗎: ";輸出結果為:'這樣寫有效嗎:
'。因為裡面不含$,所以花括號不會被當作界定符
注意2:echo "這樣寫有效嗎:"; 在回答這個問題前我們先來進行乙個實驗:
error_reporting(e_all);
$arr = array('a', 'b', 'c', 'd'=>'e');
echo "this is $arr[d]";
// 我們發現這樣寫是沒有問題的,那麼我們像下面這樣寫呢?
echo $arr[d];
產生了這樣的錯誤:
notice: use of undefined constant d - assumed 'd'
注意:採用了未定義的常量d,可能應該為'd'
那麼如果我們像下面這樣修改一下**的話
error_reporting(e_all);
$arr = array('a', 'b', 'c', 'd'=>'e');
define('f', 'd');
echo $arr[f];
我 們發現這次沒有問題了。可以看出在字串中陣列的索引不加單引號是沒有問題的,但是如果這種寫法不是出現在字串當中就會報錯,而對於字串中 的解析就是按照非字串的方式解析的。所以說在字串當中對陣列只加花括號界定而不對索引加單引號的寫法是錯誤的。因為程式 會把不加單引號的索引當作是常量來進行解析,這就產生了錯誤。正確的寫法應該是:
echo "有效的寫法: ";
特 別提醒一點:echo "this is $arr[d]";這種寫法雖然能夠被程式解析,但這也僅限於陣列是一維陣列的情況。嚴謹的寫法應該是:echo "this is ";我的學生曾經在這一點上和我爭論過,他說:既然前面一種寫法能出結果,為什麼一定要用後面一種寫法呢?那麼,我們再繼續修改一 下前面的**
error_reporting(e_all);
$arr = array('a', 'b', 'c',
'd'=>array('e'=>'f')
);echo "this is $arr[d][e]";
這樣還能夠被正確解析嗎?我只想告訴你,加花括號是嚴謹的必要的。
注意3:
error_reporting(e_all);
$arr = array('a', 'b', 'c', 'd');
echo "this is
";echo "this is
";執行上面的**。結果是一樣的,為什麼會這樣呢?我只能告訴你php是弱型別語言,至於什麼叫弱型別語言我就不在這裡多說了。自己去google一下吧。說了這麼多,那麼最能體現這些句法規則優勢的具體應用在什麼地方呢?----sql語句
// 示例一:
$sql1 = "select * from table where id=";
// 示例二:
$sql2 = "select * from table where id=";
vector中的圓括號和花括號
1.圓括號和花括號 include include include using namespace std int main vectorv int2 10 cout vector v int endl for auto i v int cout i endl cout endl cout vect...
PHP美元與花括號的組合
提及這種用法,還得先說一下php的string型別 php.net上指出,乙個字串可以用4種方式表達 單引號,雙引號,heredoc語法結構,nowdoc語法結構 這裡heredoc語法結構和雙引號形式類似,同樣nowdoc結構對應單引號 單引號 單引號包圍起來的字串中,單引號必須轉義才能使用 否則...
TCL雙引號 花括號 中括號
tcl的執行分為兩步,第一步替換,第二步執行。在方括號中的內容將在替換步驟中計算出結果,整體替換為結果,類似於c中呼叫函式。方括號在反斜槓後或在花括號內無此作用。例子 set b set y y值有更新 puts b 輸出。set y set z x值有更新 puts z 輸出。set x 在雙引號...