? 很多開發者都跟我一樣,希望自己的代碼優雅而富有美感,而有時候大量的變量賦值會讓代碼整體顯得凌亂而損失可讀性。接下來我來提供幾個賦值方案,供各位大佬參考。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ————bdHeart
1.利用array賦值
? ? ? ? 利用array我們可以把一組關聯的數據歸為一起,也可以把變量的的多種狀態值放在一塊。第一種我們好理解,把相關的變量值放在一塊,我稱其為關聯賦值,如下。
<?php
? ? //值空間
? ? $userBase = array(
? ? ? ? 'name' => 'bdHeart',
? ? ? ? 'sex' => 'boy',
? ? ? ? 'age' => '23'
? );
? ? //這里我使用遍歷,有心的朋友可以測試遍歷的方式跟直接賦值哪個更快
? ? foreach($userBase as $userKey => $userValue){
? ? ? ? $$userKey = $userValue;
? ? ? ? //eval($userKey.'='.$userValue);也可以
? ? }
?>
? ? ? 第二種是:變量在不同狀態下賦值,我之稱為可選賦值,這種我們經常用?:;三目運算的方式來賦值,但是超過兩種值的時候嵌套的三目運算顯得特別難看,性能方面的比較大佬們可以自己測試一下,例如:
<?php
? ? $item = 'name';
? ? //值空間,通常這種情況下索引數組使用得最多
? ? $userBase = array(
? ? ? ? 'name' => 'bdHeart',
? ? ? ? 'sex' => 'boy',
? ? ? ? 'age' => '23'
? );
? ? $userInfo = $userBase[$item];
?>
2.list()函數賦值
? ? ? ? 這個函數可以說是一個賦值神器,我想很多人也用過,如果有萌新不知道用法的可以問一下度娘。它表示? ‘把數組中的值賦給一些變量’? ,這跟js中的解構賦值很類似,而且他可以代替array賦值的第一種使用場景,也就是關聯賦值。
<?php
? ? $userBase = array( 'bdHeart', 'boy', '23');
? ? list($name,$sex,$age) = $userBase;
?>
3.extract()函數
? ? ? ? 這個函數在賦值方案上可以看作是list函數的加強版,它直接把關聯數組的值賦給與鍵名同名的變量,可以實現優雅地批量賦值:
? ? $userBase = array(
? ? ? ? 'name' => 'bdHeart',
? ? ? ? 'sex' => 'boy',
? ? ? ? 'age' => '23'
? );
? ? extract($userBase,EXTR_OVERWRITE);
? ? ? ? 關于具體地使用姿勢可以詢問度娘。
總結:
? ? ? ? 關于以上幾種賦值方案在忽略性能測試的情況下個人的使用情況是這樣地:在關聯賦值地場景我經常選擇使用extract()函數,如果你只能獲取到索引數組那么當然選擇使用list函數了。然后在可選賦值的場景下如果只有兩種值的情況則選擇三目運算賦值,大于兩種的選擇array的方式賦值。