$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