PHP类中的多维数组

时间:2011-02-26 11:43:13

标签: php class

class myClass {
public $user=array(
      'first_name' => 'Andi',
      'last_name'  => 'Abdulloh',
      'result'     => array('A','B','C','D','E'));
}

$db=new myClass();

我通过执行first_name来调用$db->user[first_name],但我无法弄清楚如何在该类中获取result的值。当我尝试$db->user[result[0]]时,它会返回错误。

2 个答案:

答案 0 :(得分:3)

您应该使用:

$db->user['result'][0]


[]允许您访问数组的元素:

  • $db->user是一个数组,用named-keys索引;所以你使用$db->user['name of the key']来访问它的子元素
  • $db->user['result']也是一个数组,但是用整数索引;所以你使用$db->user['result'][1]来访问它的元素


并且,作为一个重要的旁注:您不应该使用$db->user[first_name]:您应该使用$db->user['first_name'] - 请注意项目名称旁边的引号。

有关更多信息,请参阅我对此问题的回答: Is it okay to use array[key] in PHP?

答案 1 :(得分:0)

使用

$db->user['result'][0]

顺便说一句,没有引用字符串的数组键通常是不好的做法(并发出警告或通知,我不记得哪些)。因此,当您访问名字时,请改用:

$db->user['first_name']

为什么呢?关闭PHP documentation

  

这[使用不带引号的数组键]是错误的,但它有效。原因是这段代码有一个未定义的常量(bar)而不是一个字符串('bar' - 注意引号)。 PHP可能在将来定义常量,不幸的是,这些代码具有相同的名称。它的工作原理是因为PHP自动将一个裸字符串(一个与任何已知符号不对应的不带引号的字符串)转换为包含裸字符串的字符串。例如,如果没有定义的名为bar的常量,那么PHP将替换字符串'bar'并使用它。

此外,如果不引用数组键,性能会下降; PHP必须在常量表中查找令牌,然后,意识到它没有定义,用它的等效字符串替换它。