是否有更短的方法来访问数组中的属性?

时间:2010-03-30 05:10:21

标签: php arrays object

$jj_post是通过print_r()进行的数组输出调试。这个变量是一个对象数组:

Array
(
    [0] => stdClass Object
        (
            [ID] => 2571
        )

)

我通过以下代码访问object属性ID:

$jj_post_id = $jj_post[0]; 
$jj_ID = $jj_post_id->ID;

那么,有没有更简短的方法,因为这是我唯一知道的事情,我觉得代码有点太长了?

2 个答案:

答案 0 :(得分:3)

$jj_ID = $jj_post[0]->ID;

答案 1 :(得分:1)

如果您确定$ jj_post始终是一个数组,并且它将始终包含一个stdClass对象,那么您应该这样访问:

$jj_ID = $jj_post[0]->ID;

但有时并非如此。您可能并不总是知道变量的内容,因此您需要进行一些检查以验证您是否可以访问安全且可用的区域。

如果代码执行得很好,代码应该不会成为问题。

在我看来,你有两种选择:

 $jj_ID = @$jj_post[0]->ID;

这可确保以静默方式处理运行时错误,而不会抛出到标准输出。

另一种方法是绝对检查每种类型的存在:

$jj_ID = "";
if(is_array($jj_post))
{
  $jj_post_id = $jj_post[0]; 
  if(!empty($jj_post_id))
  {
    $jj_ID = $jj_post_id->ID;
  }
}