php花括弧
1. 關於php中{}的使用
1.簡單句法規則(用花括弧界定變數名,適用於PHP所有版本):
$a = 'flower';
echo "She received some $as";
// 無效;字母s會被當成有效的變數名組成元素,但是這里的變數是$a
echo "She received some ${a}s"; // 有效
echo "She received some {$a}s"; // 有效;推薦的使用方法
我們希望表達的是」她收到一些花「,語境中的flower應該採用復數形式(也就是說應該在後面加上S),但是如果不對變數做任何界定的話,就會出現第一個echo的情況。顯然我們希望輸出的是$a而不是$as。那麼我們通常是怎麼來處理這個輸出的呢?
echo "She received some $a"."s";
echo "She received some ".$a."s";
// 這兩種習慣性的寫法應該沒有加花括弧的寫法簡潔明了吧?
注意:不管{是出現在$前面還是後面,只有兩者緊挨著時花括弧才會被當成是界定符號。不要在之間加空格,要不然就會被當作普通的花括弧處理
echo "She received some { $a}s";
// 輸出的結果為:She received some { flower}s
2.復雜句法規則(用花括弧界定表達式等,使用與PHP4+):
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];
產生了這樣的錯誤:
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];
我 們發現這次沒有問題了。可以看出在字元串中數組的索引不加單引號是沒有問題的,但是如果這種寫法不是出現在字元串當中就會報錯,而對於字元串中 {$arr[foo][3]}的解析就是按照非字元串的方式解析的。所以說在字元串當中對數組只加花括弧界定而不對索引加單引號的寫法是錯誤的。因為程序 會把不加單引號的索引當作是常量來進行解析,這就產生了錯誤。正確的寫法應該是:
echo "有效的寫法: {$arr['foo'][3]}";
特 別提醒一點:echo "This is $arr[d]";這種寫法雖然能夠被程序解析,但這也僅限於數組是一維數組的情況。嚴謹的寫法應該是:echo "This is {$arr['d']}";我的學生曾經在這一點上和我爭論過,他說:既然前面一種寫法能出結果,為什麼一定要用後面一種寫法呢?那麼,我們再繼續修改一 下前面的代碼
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 {$arr[2]}
";
echo "This is {$arr['2']}
";
執行上面的代碼。結果是一樣的,為什麼會這樣呢?我只能告訴你PHP是弱類型語言,至於什麼叫弱類型語言我就不在這里多說了。自己去Google一下吧。說了這么多,那麼最能體現這些句法規則優勢的具體應用在什麼地方呢?----SQL語句
// 示例一:
$SQL1 = "select * from table where id={$_GET['id']}";
// 示例二:
$SQL2 = "select * from table where id={$this->id}";
2. php中<php {><php }>是什麼回事
呵呵,這是html和php混合寫的時候才會出現。
這是一個自定義的函數的開始和結束
function的定義是這樣的。
function 函數名{
函數體。
}
你發的這段代碼是把html分離出來了,所以是這樣的。
3. php里用花括弧來表示變數,怎麼做到的
你指的是模板里吧
編譯的時候把花括弧替換成<?php ?>就好了。
4. PHP這里這個花括弧是干什麼的
在PHP的雙引號字元串裡面,可以使用變數,有時候變數與外面的內容可能不好分辨,此時需要使用話括弧,舉例:
$id=123;
echo "id=$id";//輸出:id=123
echo "id=$idabc";//輸出:id=
echo "id={$id}abc";//輸出:id=123abc
注意第二個輸出語句,會導致$idabc變數不存在的提示,需要用第三個語句的方式增加花括弧。
此外,例子中第一個輸出語句沒有使用花括弧,因為不會產生起義,你的語句也是一樣的,可不用花括弧。
5. php裡面的 {花括弧} 是做什麼的 能不能不加
你這個簡單的if判斷語句可以不加,但是在復雜的語句下需要使用,當然php也可以不加,比如:
if($a==$b):
//somecode
endif;
6. php花括弧疑惑
PHP中你可以把變數放在一個用雙引號包起的字元串中如$errorMsg 你可以放在 "Error:$errorMsg",但如果你將他放在中間如"Error:$errorMsgaaaaaaa"那麼他會把$errorMsgaaaaaaa理解成是一個變數這是我們用一雙{}來進行定界就不存在問題了.
7. php花括弧
如果只有一句可以不加花括弧,但是不管是不是一句,還是建議加上去,這樣可讀性比較好,這是個好的編程習慣
8. php花括弧,大括弧{}幾種使用方法的分析
一、在函數或流程式控制制語句中的使用
例如:function test(){}、if(){}、foreach(){}
在函數中常用的方法就是保持數據在作用域范圍的執行
二、$str{4}在字元串的變數的後面跟上{}大括弧或者中括弧[],裡面填寫了數字,這里是吧字元串變數當成數組處理。舉個例子如下:
<?php
$str='phpernote.com';
echo $str{0}; // 輸出 p
echo $str[1]; // 輸出 h
$str='000';
$str{0}='1';
echo $str; // 輸出 100
注意:利用這一特性可用來檢查某個字元串是否滿足多少長度,使用 isset 的方式替代 strlen 函數,因為 isset 是語言結構,strlen 是函數,所以使用 isset 比使用 strlen 效率更高。比如判斷一個字元串的長度是否小於 5,如下:
if(!isset($str{5})) 比 if(strlen($str)<5) 更好。
三、對於可變變數使用大括弧,比如:{$val},這時候大括弧就是告訴PHP,括起來的部分要當成變數處理。如下例子:
<?php
$array=array('www','name'=>'phpernote','com');
echo "$array['name']";//用此句會報語法錯誤
echo "{$array['name']}";//此句正常,大括弧內的字元將作為變數來處理
注意:${$a[1]} 與${$a}[1] 是完全不同的:
${$a[1]} 這里$a[1]是一個變數;
${$a}[1] 這里$a是一個變數;
這種寫法的好處就是在字元串中引用變數的時候,這樣就可以不使用.運算符,從而減少代碼的輸入量。