2

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>

状態配列から名前を取得する正しい方法を教えていただければ幸いです。

ありがとう!

4

2 に答える 2

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); 
}
于 2013-10-27T16:00:25.810 に答える
0

これを試して:

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>";
    }
于 2013-10-27T14:51:15.723 に答える