$arr = array('k1'=>1,'k2'=>2,'k3'=>3);
如果我想獲得$改編[ 'K4'](unexpect指數),有一個通知:
Notice: undefined index......
所以,我可以設置陣列dufalut值,如紅寶石的哈希:
h = {'k1'=>1,'k2'=>2,'k3'=>3}
h.default = 'default'
puts h['k4']
然後,我會得到「默認」;
$arr = array('k1'=>1,'k2'=>2,'k3'=>3);
如果我想獲得$改編[ 'K4'](unexpect指數),有一個通知:
Notice: undefined index......
所以,我可以設置陣列dufalut值,如紅寶石的哈希:
h = {'k1'=>1,'k2'=>2,'k3'=>3}
h.default = 'default'
puts h['k4']
然後,我會得到「默認」;
只是做一些檢查,看看是否存在:
isset($arr['k4'])?$arr['k4']:'default';
或做它的功能:
function get_key($key, $arr){
return isset($arr[$key])?$arr[$key]:'default';
}
//to use it:
get_key('k4', $arr);
@尼爾的回答是好普通的用法,但如果你有一組需要默認的預定義密鑰集合,您可以始終將該陣列與默認值合併:
$arr = $arr + array('k1' => null, 'k2' => null, 'k3' => null, 'k4' => null);
這樣,如果$arr
定義了這些密鑰中的任何一個,它就會有一定的預見性。但是如果沒有,默認值就會在那裏。由於可以爲每個鍵定義不同的默認值,因此可以使選項數組變得輕鬆。
編輯或者,如果你想類似於Ruby,支持,只要繼承自ArrayObject來爲你做它:
class DefaultingArrayObject extends ArrayObject {
public $default = null;
public function __construct(array $array, $default = null) {
parent::__construct($array);
$this->default = $default;
}
public function offsetGet($key) {
if ($this->offsetExists($key)) {
return parent::offsetGet($key);
} else {
return $this->default;
}
}
}
用法:
$array = new DefaultingArrayObject($array);
$array->default = 'default';
echo $array['k4']; // 'default'
@psjscs沒有問題^ _ ^記得選擇接受答案時可以:-D – Neal 2011-05-17 15:04:35
get_key函數是有用的,謝謝!〜 – psjscs 2011-05-17 15:15:07