在PHP中,變量是$+變量名,變量名遵循標識符的命名規(guī)則,可以以字母、下劃線開頭,可以由數(shù)字、下劃線、字母組成合法的變量名。
變量聲明
所有變量在使用之前應該進行聲明,而且最好帶上注釋,雖然在PHP中可以不顯示聲明變量。聲明變量之后,可以為變量進行賦值;變量的賦值有兩種類型值賦值和引用賦值。
<?php #合法的聲明變量 $_name; $account; $show_title; #賦值 $color="red"; #引用賦值 $user_color=&$color; ?>
變量的作用域
在PHP腳本中的任何位置都可以聲明變量,但是根據(jù)位置的不同,作用域的范圍也不同。
局部變量
一般局部變量都是在函數(shù)中聲明,即它只能在函數(shù)中被引用,函數(shù)退出時改變量及其值被銷毀。如果在函數(shù)外使用該變量,PHP會把它當作另外一個變量進行處理,與函數(shù)中的變量無任何關系。
<?php $x=5; function show_x() { $x=3; echo $x; } show_x(); echo $x; ?>
函數(shù)參數(shù)
函數(shù)參數(shù)更具其傳遞的方式分為兩種,按值傳遞和按引用傳遞;如果是按值傳遞,參數(shù)的作用域只限于函數(shù)內,函數(shù)退出后參數(shù)被銷毀。但按引用傳遞,參數(shù)的作用域范圍不僅在函數(shù)內部。
<?php $cost_fish=20.10; $cost_apple=2.45; #引用參數(shù)前面需要加上&符號 function rise($cost_fish,&$cost_apple) { $cost_fish++; $cost_apple++; } rise($cost_fish,$cost_apple); echo $cost_fish."值傳遞參數(shù)<--->引用傳遞參數(shù)".$cost_apple; ?>
全局變量
可以在腳本中的任何一個地方訪問全局變量,但在函數(shù)中要修改全局變量的時候需要使用關鍵字global顯式的聲明。
<?php $x=5; function show_x() { global $x; $x++; } show_x(); ?>
通過$GLOBAL數(shù)組也可以聲明全局變量
<?php $x=5; function show_x() { global $x; $x++; } show_x(); ?>
使用全局變量一定要謹慎,用多了之后很容易造成代碼混亂。
靜態(tài)變量
靜態(tài)變量與函數(shù)參數(shù)不同在于,靜態(tài)變量聲明的時候多了static關鍵字,使得靜態(tài)變量在函數(shù)退出之后不會被銷毀,并且保留這個值在函數(shù)再次調用的時候使用該值。
<?php function spend() { static $date=0; $date++; echo $date; } spend(); spend(); ?>
PHP預定義變量
PHP中預定義了很多變量,可以在執(zhí)行腳本的任何位置訪問他們,這些變量主要是提供了大量關于環(huán)境的信息。
//打印出$_SERVER 預定義的變量信息 foreach($_SERVER as $var =>$value){ echo "$var=>$value<br/>"; }
先看下PHP正在進行時-字符串動態(tài)插入變量的內容。具體內容詳情如下所示:
在PHP中,一般用雙引號或者單引號將字符串括起來。
echo "張三李四王五叫上趙六一起去'喝酒'".
如果要動態(tài)將將數(shù)據(jù)插入到字符串中,我們除了使用.號拼接,還可以通過使用{}來標識字符串中動態(tài)的部分。
<?php $name="趙六"; echo "張三李四王五\n叫上$name一起去\'喝酒\'."; echo "</br>"; echo "張三李四王五\n叫上\$name一起去\'喝酒\'."; echo "</br>"; echo "張三李四王五\n叫上{$name}一起去'喝酒'."; echo "</br>"; echo '張三李四王五\n叫上$name一起去\'喝酒\'.'; echo "</br>"; echo '張三李四王五\n叫上{$name}一起去\'喝酒\'.'; echo "</br>"; ?>
通過上面的代碼我們發(fā)現(xiàn):
- 在雙引號中直接插入變量是無效的;
- 在雙引號中可以通過反斜杠()轉義字符,但雙引號中的單引號不需要通過反斜杠轉義;
- 在單引號中除了可以轉義單引號,對其他的字符反斜杠轉義是無效的;
- 通過{}可以在雙引號字符串中動態(tài)插入變量。
總結