我已经厌倦了写三元表达式来清理数据,比如:
$x = isset($array['idx']) ? $array['idx'] : null;
// and
$x = !empty($array['idx']) ? $array['idx'] : null;
有没有一种 本地方式 或 ZF访问器/过滤器 可以获取某个给定数组的元素值,而不需要:
- 禁用
error_reporting
- 使用三元运算符进行
isset
/empty
检查 - 错误控制运算符
@
- 创建自己的全局函数或应用访问器/过滤器
类似于:
$x = get_if_set($array['idx']);
// or
$x = Zend_XXX($array, 'idx')
filter_var()
,但这可能会变得非常笨重和繁琐。仍然认为最好的方法是设置魔术获取方法并将数组传递给ArrayObject。 - mseancoleArrayObject::offsetGet($index)
就可以搞定。 - AlexoffsetGet()
方法,我只是在谈论神奇的__get()
方法。然而,既然它已经具备了那个功能,请继续使用 :) - mseancole__get()
仅适用于请求属性$obj->prop
,而不是索引$obj['idx']
。由于ArrayObject
实现了ArrayAccess
,我们可以重载数组访问方法offsetGet
,在尝试获取索引之前检查其是否存在。感谢您的建议。 - Alex