Php Codeigniter-访问多维stdObject数组时出错

Php Codeigniter-访问多维stdObject数组时出错,php,codeigniter,Php,Codeigniter,我从CodeIgniter中的控制器处获得以下结果数组: Array ( [cities] => Array ( [0] => stdClass Object ( [id] => 1 [name] => Jersey City [state] => stdClass Object ( [id]

我从CodeIgniter中的控制器处获得以下结果数组:

Array
(
    [cities] => Array
    (
        [0] => stdClass Object
        (
            [id] => 1
            [name] => Jersey City
            [state] => stdClass Object
            (
                [id] => 1
                [name] => New Jersey             
            )
         )

        [1] => stdClass Object
        (
            [id] => 2
            [name] => Philadelphia
            [state] => stdClass Object
            (
                [id] => 2
                [name] => Pennsylvania
            )
        )
    )
)
现在我想用这些值创建一个下拉框,这样框中就有城市、州

Jersey, New Jersey
Philadelphia, Pennsylvania
这就是我努力实现这一目标的方式:

<?php 
    foreach($cities as $city) {
        echo "<option value='$city->id'>$city->name, $city->state->name</option>";
    }
?>
我发现以下错误:

<p>Severity: 4096</p>
<p>Message: Object of class stdClass could not be converted to string</p>
严重性:4096

消息:类stdClass的对象无法转换为字符串

如果有人能指导我如何从状态数组中获取名称,我将不胜感激

谢谢

试试这个:

foreach($cities as $city) {
    foreach($city->state as $state) {
        echo "<option value='$city->id'>$city->name, $state->name</option>";
    }
}
foreach($cities as $city) {
        echo "<option value='$city->id'>$city->name, $city->state[0]->name</option>";
    }
foreach($cities作为$city){
foreach($city->state作为$state){
回显“$city->name,$state->name”;
}
}
或者试试这个:

foreach($cities as $city) {
        echo "<option value='$city->id'>$city->name, $city->state[0]->name</option>";
    }
foreach($cities作为$city){
回显“$city->name,$city->state[0]->name”;
}

您正在处理一个对象,但是当您
echo
它时,PHP试图将其转换为字符串,但失败了,从而生成了上述错误消息。为了避免这种情况,可以将变量用大括号括起来,如下所示:

foreach($cities as $city) { 
    echo "<option value='{$city->id}'>{$city->name}, 
    {$city->state->name}</option>"; 
} 

非常感谢你的回答@用户2550387:很高兴我能帮忙:)
foreach($cities as $city) { 
    echo sprintf("<option value='%d'>%s, %s</option>", 
    $city->id, $city->name, $city->state->name); 
}