1

Web サービスのクエリの結果があり、そこからいくつかの値を取得したいと考えています。動作しますが、PHP の通知に問題があるため、おそらく何か間違ったことをしているのでしょう。

これは$items可変内容です:

stdClass Object
(
    [response] => stdClass Object
        (
            [0] => stdClass Object
                (
                    [id] => 275
                    [corpid] => 16107
                    [name] => default
                    [description] => 
                    [status] => ok
                    [nbSteps] => 7
                )

            [defaultItem] => 275
        )

    [error] => 
    [status] => success
)

だから私は次のようなものを試しました:

foreach ( $items->response AS $key => $item ) {
    if ( $item->name == 'default' ){ // Line 106
        $Id = $item->id;
    }
}

動作し、$Id275 に等しいですが、PHP は通知を返します。

Notice: Trying to get property of non-object in /home/web/dev/webservice-form.php on line 106

どんな助けでも大歓迎です。

編集: これは $item 変数の内容です (foreach ループから取得):

stdClass Object
(
    [id] => 275
    [corpid] => 16107
    [name] => default
    [description] => 
    [status] => ok
    [nbSteps] => 7
)

275

「275」は結果の一部であることに注意してください。

4

2 に答える 2

2

問題は、defaultItem内部オブジェクトのエントリです。nameオブジェクトがないため、ループはある時点でこれに到達し、存在しないにアクセスしようとします。

で簡単に解決できるはずis_object()です。

于 2013-02-26T13:10:45.720 に答える
2

1 つはオブジェクトで、もう 1 つは int 値です。各項目が何であるかを確認してみてください。

foreach ( $items->response AS $key => $item ) {

    if(is_object($item) && $item->name == 'default'){ // Line 106
        $Id = $item->id;
    }
    else {
         $Id = $item; // assume it's scalar value
    }
}

明らかに、そこに追加する必要がある他のチェックに他に何が期待できるかによって異なります..

于 2013-02-26T13:22:50.723 に答える