php巧妙使用 符

2021-07-11 12:15:01 字數 1982 閱讀 9965

php中,變數實際分為兩部分,一部分為變數名,另一部分為變數內容.對變數而言,&符使得不同的名字的變數訪問同乙個變數內容,這裡的名字指的是變數名,注意函式其實也是變數,同時&符號也經常作為一種位運算子參與運算,以下為工作中遇到的巧妙使用&符的場景,本文會持續跟新.

變數篇

1.使用&符優化foreach()

$arr = [

['name'=>'測試1','time'=>'2016-03-01','status'=>'1'],

['name'=>'測試2','time'=>'2016-03-02','status'=>'2'],

['name'=>'測試3','time'=>'2016-03-03','status'=>'3'],

['name'=>'測試4','time'=>'2016-04-01','status'=>'1'],

['name'=>'測試5','time'=>'2016-04-02','status'=>'2'],

['name'=>'測試6','time'=>'2016-04-03','status'=>'3'],

];

上面為資料庫中查詢出的一段資料  現在需要將time字斷轉換為時間戳 status 1,2,3對應待審核 審核中 已審核

foreach($arr as $key=>$val)else if($val['status'] == '2')else

}

實際上我們可以使用&符來優化一下

foreach($arr as &$val)else if($val['status'] == '2')else

}

上述優化的好處是我們節省了儲存$key的記憶體空間(如果是個很大的陣列就有意義) &引用指向統一記憶體空間 執行結果是一樣的

2使用&符號改變函式引數值

有這麼個情況,如下:

function test($a, $b)else

}

我們有乙個函式test,我們希望傳入$a,$b兩個引數 ,如果$a大於$b,返回兩數之差,否則返回兩數隻和,同時我們還希望知道結果求和還是求差,當然這個需求本來就有點說不通,暫時不提這個,因為php只能return乙個結果,有童鞋可能會想到將結果和運算方式寫入陣列返回,但也可以通過如下方式:

function test($a,$b,&$result)else

}

通過傳入第三個變數$result來獲得運算方式,我們知道,引數在傳遞進函式中並且運算完畢這個過程不會經過改變的,如果要使引數發生改變,除了通過globel關鍵字宣告,還可以通過&符來完成 

$num = test(1, 2, $result);

有興趣的同學可以分別列印下$num跟$result; 

運算子篇

&(按位與)符作為一種位運算子,我們也可以使用&來簡化一些功能實現,比如:許可權

先看一組數字 1,2,4,8,16,32,64,128,512,1024,細心的童鞋可能一眼就看出來了規律,沒錯,就是2的次方那我們如何來完成乙個許可權呢

我們可以先這樣定乙個乙個陣列

[

'select'=>1,

'update'=>2,

'add'=>4,

'delete'=>8

]

在分配許可權時,我們盡需要儲存所分配許可權的和,比如使用者有修改和新增許可權 那麼許可權和為6

判斷許可權時,使用&符號判斷即可,比如,查詢的許可權為1,那麼我們判斷是否有查詢許可權時,即用所需許可權按位與(&)總許可權,對應上述即為 1&6 = false,而修改許可權為 2&6 = true,具體運算過程在這不多說,是不是很方便呢,對於乙個許可權不是很多的小型系統,這樣是不是很方便呢?   

巧妙使用std mem fun

例如 假設有如下的 class employee std vectoremps 假設我們要呼叫emps裡面所包含的所有employee的dosomething 一般初學者會這樣呼叫 for std vector iteror it emps.begin it emps.ends it 而定義乙個全域...

php函式的巧妙應用

直接切入正題 1.extract 函式從陣列中把變數匯入到當前的符號表中 對於陣列中的每個元素,鍵名用於變數名,鍵值用於變數值。第二個引數 type 用於指定當某個變數已經存在,而陣列中又有同名元素時,extract 函式如何對待這樣的衝突。本函式返回成功設定的變數數目。語法 extract arr...

運算子的巧妙應用

我的github and,按位與。以 a b為例,將 a和 b轉化為二進位制後,都為1的位設為1。程式 a 6 b 3 var dump a b 輸出 int 2 原理 提醒操作 郵箱簡訊 文章被收藏 開關按鈕 開關按鈕 開關按鈕 被關注開關按鈕 開關按鈕 開關按鈕 開關按鈕 開關按鈕 開關按鈕 1...