PHP引用操作以及外部操作函數的局部靜態變數的方法,靜態變數
通過引用方式在外部操作函數或成員方法內部的靜態變數
下面舉個簡單的例子,說明三個關於引用方面的問題:
1. 參數引用後函數內進行類型轉換同樣是地址操作
2. 參數引用後再傳遞給其他函數時需要再次添加引用符才能保持地址操作
3. 函數返回值引用必須在函數申明時以及調用時都添加引用操作符
該例子使用的是對象方法的操作,同樣適用於函數
<?phpclass A {public function & test1(& $a) {static $i = 0;var_dump($i);$a = (array) $a;$a['domain'] = 'http://blog.csdn.net/zhouzme';$this->test2($a);$i++;var_dump($a);var_dump($i);return $i;}protected function test2(& $a) {$a['name'] = '蝸牛';}}$obj = new A();$a = '';$c = & $obj->test1($a);$c++;var_dump($a);$obj->test1($a);var_dump($a);
輸出的結果
局部靜態變數的引用問題先啦
看這問題問的:) e是在函數體外面聲明的,它不是局部變數,他是全域的,本源檔案中在static int e這句後面的函數都可以用他,也不需要用extern關鍵字
假如你正確的問了一個靜態局部變數在其他函數是否可用的話?那答案是否定的。
局部變數只在本函數可用,不管是不是靜態
PHP有沒全域靜態變數,比如像java那樣class{ public static int INY=0;} 我在任何jsp頁面都可以調用
有全域變數,但如果要在不同的頁面調用需要include或require含有全域變數的檔案。
函數或類內調用全域變數需要用global關鍵字
例:
1.php
<?php
$a = "test";
?>
2.php
<?php
include("1.php");
//或者可以 require("1.php");
echo $a;
//輸出test
?>
函數內調用
<?php
$a = "test";
//也可以從其它檔案中require/include
/* 也可以是類 */
function a(){
global $a; //引入全域變數
return $a;
//也可以免去global,直接return $GLOBAL['a'];
}
echo a(); //輸出test
?>
如果確實需要一個真正的全域變數,可以考慮使用session或cookie來儲存
參考資料:多年編程經驗