以下代码:
$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循环输出id
和option_name
:
foreach ($options as $option)
{
echo "<option value='".$option["id"]."'>".$option["option_name"]."</option>";
}
这应该很容易......但我正在摸索:(
答案 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.