【发布时间】:2012-06-02 15:16:15
【问题描述】:
如果我有这个数组,
ini_set('display_errors', true);
error_reporting(E_ALL);
$arr = array(
'id' => 1234,
'name' => 'Jack',
'email' => 'jack@example.com',
'city' => array(
'id' => 55,
'name' => 'Los Angeles',
'country' => array(
'id' => 77,
'name' => 'USA',
),
),
);
我可以用
得到国家名称$name = $arr['city']['country']['name'];
但如果国家/地区数组不存在,PHP 会产生警告:
Notice: Undefined index ... on line xxx
我当然可以先做测试:
if (isset($arr['city']['country']['name'])) {
$name = $arr['city']['country']['name'];
} else {
$name = ''; // or set to default value;
}
但那是低效的。获得$arr['city']['country']['name'] 的最佳方式是什么?
如果不存在则不生成PHP通知?
【问题讨论】:
-
为什么会“低效”?
-
数据从何而来?如果来自第三方,您应该编写一个解析函数来将其解析为一个标准化的数据结构,您知道哪些键存在,哪些不存在......
-
@deceze:获取单个值需要 4 行以上,效率很低。
标签: php