c/vb/php中
可以利用值(數和字串)的位置
1/函式引數
2/運算子運算元(包括vb中的賦值語句)
3/陣列下標(包括phpkey標)
能產生值(數和字串)的位置
1/簡單變數
2/陣列元素
3/結構成員
4/函式
5/常量(一般字面常量、c和php中define常量、vb中const常變數)
6/運算結果
在這三種語言中,能產生值的位置都能夠用於可利用值的位置,這一點大家都是相同的,沒有什麼區別
另:函式產生值為陣列(結構,有待測試)的
c中返回的為陣列指標,函式返回值能夠直接用於偏移運算,以定位陣列元素
vb和js中也可以直接後加元素下標,進行元素定位
但是唯獨在php不行
c和vb中需要字面名稱的位置
1/變數名(包括簡單變數名/陣列變數名/結構變數名)
2/結構成員名
3/函式名
4/類名
5/常量名
以上這些名稱,說到底都是字元,如果能利用'能產生值的位置'中的那些元素中所產生的字元來進行二次解析,將是很方便的,但是這很容易造成歧義,為了克服,於是在php中引入了$符號,使那些能產生字元的元素用於那些需要字元的元素,進行二次解析,但是php做了一些限制,僅僅將簡單變數產生的字元,用於變數名/函式名/結構成員名/類名,不包括常量名,其他能返回字元的元素,典型的如函式,也不能用於作為變數名/函式名/結構成員名/類名的名稱,進行二次解析
<2015-04-09 測試 php中類公共成員字元 陣列元素字元 類公共成員是陣列的陣列元素字元 都可以作為函式名進行二次解析》
特別的:
1/二次解析只能兩層,$$$a,只能解析2個$,最後乙個$將以字元形式輸出
2014-10-19測試,可以正常輸出
<?php
$_1 = '_2';
$_2 = '_3';
$_3 = '_4';
$_4 = '_5';
echo "$$$$_1";
?>
2/php中特有的單雙引號,單引號直接輸出,雙引號解析轉義,如\n等及$單層變數(包括單層簡單變數和陣列,其中陣列的key不能用引號,但可以直接用單層$變數表示)
3/類在set/get傳遞屬性name名的時候,是將其轉變成字串做引數傳遞,然後在進行二次解析,這裡的->符號就相當於變數的$符號進行理解
為什麼要用「變數」
說到學習程式設計啊,首先要學習的,肯定就是變數了,因為變數是一切 的基礎。一 變數是什麼?變數變數,說白了就是會變的量,有些同學不理解什麼是變數,為什麼要宣告變數,宣告變數有什麼用。下面我就打一些比方來說明什麼是變數。首先,要理解,程式設計是什麼。程式設計,就是我們告訴計算機,你要幫我做什麼。在這個...
php中為什麼要用static方法
static全域性變數和普通全域性變數,static區域性變數和普通區域性變數,static函式與普通函式的區別?下面本文將一一為你解答。1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存...
Python中為什麼要用self?
參考文章 self的含義與基本用法 python中為什麼要使用self 注意到文章中的一句話,避免非限定呼叫造成的全域性變數。舉個例子來談談我對這句話的理解 class father def init self,name self.name name def selfdemo self print ...