[php] 從 array 中取值 / get an element from an array
2013 Jan 18 未分類
這是個再簡單不過的問題了
$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);
0則留言