2
object(Term)#32 (10) {
  ["term_id":protected]=> int(11589)
  ["session_id":protected]=> string(5) "11275"
  ["site_id":protected]=> int(9999999)
  ["data":protected]=> array(62) {
    ["term_id"]=> string(5) "11589"
    ["term_name"]=> string(9) "Full Year"
    ["start_date"]=> string(10) "2013-09-02"
    ["end_date"]=> string(10) "2014-06-14" 
  }
}

我从 var_dump 获取这些数据,我想访问“start_date”。这个怎么做?

比方说

var_dump($term);

我做了:

var_dump($term["start_date"]); and I get a NULL.
4

3 回答 3

4

你不应该那样做。var_dump是一个调试功能,所以它的输出类似于变量的内部表示(不准确,原因) - 它不应该用于任何其他情况而不是调试。

由于您想要获取的对象数据是受保护的,因此您应该使用相应的方法来获取/修改它(请参阅您的Term类定义)

于 2013-10-01T06:15:32.800 回答
0

您不能start_date以这种方式访问​​该物业。$term如果是数组,您的语法将有效,但不适用于对象。

对象需要受保护属性的 getterstart_date

于 2013-10-01T06:16:55.600 回答
0

您的对象$term没有索引start_date,它不是数组。此外,该属性data受到保护,因此只能从对象内部访问。

如果您protected从对象中删除标志,它将可以像这样访问:

var_dump($term->data["start_date"]);

这将访问对象内部start_date数组中的索引。data$term

另一种方法是为Term类的值添加一个 getter 函数。

于 2013-10-01T06:17:02.727 回答