从多维数组中获取值的问题

时间:2010-01-24 22:47:42

标签: php arrays

以下代码:

      $options = $value[$i]['options'];
      print_r($options);

输出以下结果:

Array ( 
  [0] => stdClass Object ( 
        [id] => 1 
        [field_id] => 1 
        [option_name] => I'm a normal user ) 
  [1] => stdClass Object ( 
        [id] => 2 
        [field_id] => 1 
        [option_name] => Store owner ) 
  [2] => stdClass Object ( 
        [id] => 3 
        [field_id] => 1 
        [option_name] => Brand owner ) 
  [3] => stdClass Object ( 
        [id] => 4 
        [field_id] => 1 
        [option_name] => Designer ) 
)

那么为什么我不能使用echo $options[0]["option_name"]输出“我是普通用户”?

我的计划是使用foreach循环输出idoption_name

  foreach ($options as $option)
  {
    echo "<option value='".$option["id"]."'>".$option["option_name"]."</option>";
  } 

这应该很容易......但我正在摸索:(

3 个答案:

答案 0 :(得分:3)

尝试在foreach中使用它

$option->option_name;
$option->id;

$options实际上是一个对象。这就是为什么你看到它是stdClass的一个实例。该类中的每个值都可以通过->访问者访问。

顺便说一下,您可以像这样定期访问它:

$options[0]->option_name;
$options[0]->id;

答案 1 :(得分:3)

第二级不是数组而是对象。这是正确的:

$options[0]->option_name

答案 2 :(得分:0)

如果您将其中一个值分配给新变量,请记住,您将获得一个对象,而不是一个字符串。您可以通过执行以下操作来解决此问题:

$string = (string)$options[0]->option_name;

如果您只是输出示例显示的方式,这不是问题,但如果您使用值,例如数组键,则更重要。例如:

$array[$options[0]->id] == $array[1]; // FALSE!!
$array[(string)$options[0]->id] == $array[1] // True.