在PHP中,大括弧“{}”可以起到如下作用:
- 將多個獨立語句合并為一個複合陳述式,例如 if ... else ...中經常如此使用
- 在變數間接引用中進行定界,避免歧義。例如 ${$my_var[8]}與${$my_var}[8]的區分
- 用於指示字串變數中的單個字元(下標從0開始),例如
$my_str="1234";$my_str{1}='5'; //現在 $my_str 內容為 '1534'
-
此用法為PHP5之後的特性,用於消除使用中括弧引起的歧義。
如:
$sql = "insert into article(`channel_id`,`title`,`detail`,`pub_time`) values('{$cid}','{$title}','{$detail}','{$time}');";
不加似乎也可以,加{}是什麼意思呢?
還有欄位名 為什麼要以``包括呢?
至少便於閱讀嘛~~~''是insert into語句要求的,因為字串要成對出現嘛加{}有時候是為了防止變數名和後面的字串連在一起嘛例如{$cid}dd如果cid=aa那麼{$cid}dd=aadd不加的話你自己看看了$ciddd,豈不變成了ciddd變數了~~
- // The following is okay as it's inside a string. Constants are not
- // looked for within strings so no E_NOTICE error here
- print "Hello $arr[fruit]"; // Hello apple
-
- // With one exception, braces surrounding arrays within strings
- // allows constants to be looked for
- print "Hello {$arr[fruit]}"; // Hello carrot
- print "Hello {$arr['fruit']}"; // Hello apple
PHP 變數後面加上一個大括弧{},裡面填上數字,就是指PHP 變數相應序號的字元。
例如:
$str = 'hello';
echo $str{0}; // 輸出為 h
echo $str{1}; // 輸出為 e
如果要檢查某個字串是否滿足多少長度,可以考慮用這種大括弧(花括弧)加isset 的方式替代 strlen 函數,因為 isset 是語言結構,strlen 是函數,所以使用 isset 比使用strlen 效率更高。
比如判斷一個字串的長度是否小於 5:
if ( !isset ( $str{5} ) ) 就比 if (strlen ( $str ) < 5 )好。
下面幾個比較能說明原因的解釋是:
- 表示{}裡面的是一個變數 ,執行時按照變數來處理
- 在字串中引用變數使用的特殊包括方式,這樣就可以不使用.運算子,從而減少代碼的輸入量了。 其實輸出那塊是等同於print "hello ".$arr['fruit'];
php中大括弧的作用,如下:
一、不管什麼程式,function name(){}, for(){},….這太多了,不說也知道什麼用了。
二、$str{4}在字串的變數的後面跟上{}剛大括弧和中括弧一樣都是把某個字串變數當成數組處理
三、{$val},這時候大括弧起的作用就是,告訴PHP,括起來的要當成變數處理。
$arr=array(0=>123,'name'=>'小豬');
foreach($array as $k=>$v){
echo "select * from blog_blogs where blog_tags like '%{$arr[$k]}%'order by blog_id"; //加一個大括弧只是將作為變數的標誌符
}
echo '<br/ ><br/><br/><br/><br/><br/><br/ >';
foreach($array as $k=>$v){
echo "select * from blog_blogs where blog_tags like'%{{$arr[$k]}}%' order by blog_id"; //加兩個大括弧,外層的將作為普通的字元
}
//用大括弧來區分變數
//echo "$arr['name']";//用此句會報語法錯誤
echo "{$arr['name']}";//此句正常,大括弧內的字元將作為變數來處理
//$str{4}在字串的變數的後面跟上{}大括弧和中括弧一樣都是把某個字串變數當成數組處理
$str = 'abcdefg';
echo $str{4};