3

PHPでwsdl Webサービスにアクセスしています。読み取りはうまくいきますが、結果を解析するのはちょっと難しいようです。結果がどのように見えるかを知るために、結果を var_dump() してみました。これは、結果を vardump するために使用する PHP コードです。

 foreach($result as $var => $value) {

  var_dump($value);
    echo "<br />";

}

これは私がそれで得るものです:

object(stdClass)#3 (3) {
 ["Successful"]=> bool(true) 
 ["MessageId"]=> string(0) "" 
 ["MlsMessageText"]=> string(0) "" 
 } 

object(stdClass)#4 (3) { 

["RowCount"]=> int(3) 
["ColumnCount"]=> int(3) 
["Columns"]=> object(stdClass)#5 (1) { 

    ["Column"]=> array(3) { 

            [0]=> object(stdClass)#6 (2) { 

                ["Name"]=> string(5) "RowID" 
                ["Rows"]=> object(stdClass)#7 (1) { 

                    ["string"]=> array(3) { 
                    [0]=> string(5) "12001" 
                    [1]=> string(5) "12002" 
                    [2]=> string(5) "12003" } } } 

            [1]=> object(stdClass)#8 (2) { 

                ["Name"]=> string(8) "PersonID" 
                ["Rows"]=> object(stdClass)#9 (1) { 

                    ["string"]=> array(3) { 
                    [0]=> string(11) "12033310001" 
                    [1]=> string(11) "12033310002" 
                    [2]=> string(11) "12033310003" } } } 

            [2]=> object(stdClass)#10 (2) { 

                ["Name"]=> string(10) "PersonName" 
                ["Rows"]=> object(stdClass)#11 (1) { 

                    ["string"]=> array(3) { 
                    [0]=> string(10) "Jack Jones" 
                    [1]=> string(11) "Jenifer Row" 
                    [2]=> string(12) "Marin Banker" } } }

        } 
    } 
} 

それはかなり複雑な答えであり、ループで解析する方法がわかりません。最後に、データを含むテーブルを取得したいと思います。

どんな助けも非常に感謝しています:)

4

3 に答える 3

3

オブジェクトは反復可能です。したがって、foreach を使用してそれらをループできます。foreach ループを含む再帰関数を作成するだけです。たとえば、次のようにします。

function loop($input)
{
    foreach ($input as $value)
    {
        if (is_array($value) || is_object($value))
            loop($value);
        else
        {
            //store data
            echo $value;
        }
    }
}
于 2012-11-28T08:14:52.590 に答える
2

column -> row問題は、テーブルをではなく に転置したrow -> columnことです。新しいテーブルを作成し、列と行を逆にすることでそれを行うことができます。

$table = array();

foreach ($result['xxx']->Columns->Column as $colnr => $coldata) {
    foreach ($coldata->Rows->string as $rownr => $rowdata) {
        $table[$rownr][$coldata->Name] = $rowdata;
    }
}

print_r($table);

ところで、$result['xxx']動作しません'xxx'。正しいキーに置き換える必要があります。

于 2012-11-28T08:29:42.060 に答える