[php] 從 array 中取值 / get an element from an array

這是個再簡單不過的問題了

$value = $arr[$key];

不就搞定了嘛?

因為我常用一個 array 的方式
把一整沱的東西 傳進 function 裡面

用 array 的好處是
如果某個參數不需要傳遞的時候
空下來就好

如果用 function parameter 的方式
會變成這樣

call_function(null, null, null, need_value);
會變很醜

而且時間久了
誰知道第幾個參數是什麼意思?

以跟隨法人的某一段 function code 來說

function get_list($para=array())

{
$type = @$para[‘type’];
$action = @$para[‘action’];
$size = @$para[‘size’];
}
我會用這種方法去傳遞參數
但是這個其實不是標準用法
我只是用 @ 的方式把錯誤訊息避開
寫 code 的時候很忌諱這種方法
因為你只是裝做沒看到錯誤
錯誤還是存在的
而且如果 CodeIgniter 有開 log 記錄一些錯誤訊息
你就會看到你的 log 充滿了這種記錄
ERROR – 2013-01-18 05:43:34 –> Severity: Notice  –> Undefined variable: pare /Applications/XAMPP/xamppfiles/htdocs/stock/application/models/broker_trade.php 88
意思就是
這種錯誤的寫法遲早要改的啦!!!
剛查了一下如何檢查 array 中是否有某個 key/value 的 pair 的相關 function
歸納出這個寫法
$symbol = array_key_exists(‘symbol’, $para) ? $para[‘symbol’] : null;
這樣 php 就不會噴 error
而且就算沒有傳數值進來, 接收的變數也會收到 null
只要之後的 error handling 有做好就好

2013-04-01 補充
果然人家早就把這種 function 寫好了
請參考 CodeIgniter Array Helper
一行搞定

element()

從陣列中讀取元素,此函數會檢查陣列索引是否已設定,且陣列值是否存在。若存在則傳回陣列值,否則傳回False或是任何你所指定的預設值(透過函數第三個參數設定)。參考範例如下:

$array = array(‘color’ => ‘red’, ‘shape’ => ’round’, ‘size’ => ”);

// 回傳 “red”
echo element(‘color’, $array);

// 回傳 NULL
echo element(‘size’, $array, NULL);

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料