【问题标题】:Codeigniter - Error while accessing multi dimensional stdObject arrayCodeigniter - 访问多维 stdObject 数组时出错
【发布时间】:2013-10-27 14:49:14
【问题描述】:

我在 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>";
    }
?>

当我尝试访问时:

$city->state->name

我收到以下错误:

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

如果有人能指导我从状态数组中获取名称的正确方法,我将不胜感激。

谢谢!

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

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

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

    或者,您也可以使用sprintf()(我认为这更简洁一些):

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

    【讨论】:

    • 非常感谢您的回答!
    • @user2550387:很高兴我能帮上忙 :)
    【解决方案2】:

    试试这个:

    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>";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多