php中大括弧作用介紹_PHP

來源:互聯網
上載者:User
關鍵字 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 '






';
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};


{}大括弧在php中的作用(PHP變數放在大括弧裡面的含義)

如:$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變數了~~

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 Notice警告的是下面一句:

switch (${action}.'_'.${child}) {
初看並沒有什麼問題。我也查詢了PHP手冊上關於變數的定義:這裡。
1、可變變數的情況
可見,與大部分資料一樣,變數使用大括弧的情況,在於“可變變數”(Variable variables)。其中提到:


引用
In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write $$a[1] then the parser needs to know if you meant to use $a[1] as a variable, or if you wanted $$a as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: ${$a[1]} for the first case and ${$a}[1] for the second.
也就是說,為了在數組環境中也可以使用可變變數,因此,需要根據不同的情況,恰當的使用大括弧{}限制變數的範圍。${$a[1]} 與${$a}[1] 是完全不同的:


引用
${$a[1]} 這裡$a[1]是一個變數;
${$a}[1] 這裡$a是一個變數;
2、定界、避免歧義
實際上,這情況與可變變數時類似。例如,若使用“.”串連符,串連一個字串,可能是這樣:

echo $str.'_2010';
用大括弧來寫,可能更簡單:

echo "${str}_2010";
可見,如果沒有大括弧,則可能把$str_2010整個作為一個變數來處理。當然,這樣的寫法,只能用在雙引號中,單引號裡面是不會執行變數替換的。

3、字串變數中的單個字元
例如:
複製代碼 代碼如下:
$str='000';
$str{0}='1';
echo $str; //輸出為100
?>

這不難理解,與中括弧[]的作用是一致的,有點類似Python中把字串看成對象的情況。所以,下面的語句功能相同:
複製代碼 代碼如下:
$str='000';
$str[0]='1';
echo $str; //也是輸出100
?>

不過,這些都不是我想說明的內容,真正想描述的情況,請見下面。

二、變數使用大括弧的異同
首先,把PHP的錯誤資訊輸出全部開啟,即/etc/php.ini 為:


引用
error_reporting = E_ALL
display_errors = On
然後,開啟測試頁面,其中代碼為:
複製代碼 代碼如下:
$test='123';
echo $test;
echo "${test}";
echo "{$test}";
echo ${test}.'_';
echo ${test};
?>

你會看到如下的結果:


引用
123123123
Notice: Use of undefined constant test - assumed 'test' in /var/www/html/phpcrm/testpages/variables.php on line 6
123_
Notice: Use of undefined constant test - assumed 'test' in /var/www/html/phpcrm/testpages/variables.php on line 7
123
這說明什嗎?
1、可接受的寫法
從輸出結果中“123123123”,表明前面三行的echo語句都是正常的:
複製代碼 代碼如下:
echo $test;
echo "${test}";
echo "{$test}";

2、不建議的寫法
後面的兩行都有Notice警告,也就是曾把test變數看成常量,只是後來才假設為變數來處理的。因此,為了避免歧義和衝突,不建議這樣寫:
複製代碼 代碼如下:
echo ${test}.'_';
echo ${test};

不過,可以有一種變通的寫法
複製代碼 代碼如下:
echo ${'test'}.'_';
echo ${'test'};

這樣寫的話就不會報錯了
3、不正確的寫法
網上不少資料介紹,${var}與{$var}的作用是一樣的。但是,如果你再加入一句:

echo {$test};
那麼,你將會得到以下錯誤資訊:


引用
Parse error: syntax error, unexpected '{' in /var/www/html/phpcrm/testpages/variables.php on line 8
這可不是Notice警告,是錯誤,因解析問題,程式將不能正常運行。

三、總結
結合前面兩部分的內容,我相信,對於變數引用時使用大括弧,應遵循以下原則:


引用
1、正確的寫法為:${var} 的形式;
2、與雙引號一同使用;
3、根據需表達的意思進行定界。
所以,最後我把switch一行改為:

switch ("${action}_${child}") {
即不再出現Notice警告。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.