3

I am accessing a wsdl webservice with php. Reading out works great but parsing the result seems kinda difficult: I tried to var_dump() the result to get an idea how the result looks like. This is my PHP code I use to vardump the result:

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

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

}

This is what i get with it:

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

        } 
    } 
} 

Its a rather complex answer and I have no Idea how to parse it with looping. Finally i want to get a table containing the data.

Any help very apreciated :)

3 Answers 3

3

Objects are itteratable. So you can loop through them with foreach. Just create recursive function with foreach loop in it. Like that for example:

function loop($input)
{
    foreach ($input as $value)
    {
        if (is_array($value) || is_object($value))
            loop($value);
        else
        {
            //store data
            echo $value;
        }
    }
}
Sign up to request clarification or add additional context in comments.

1 Comment

But if I loop like this i can't detect if the $value I give out is the ["Name"] or the ['value' ]of the column, do I? (sorry, i'm still Beginner in php...)
2

The problem is that they transposed the table into column -> row instead of row -> column, you can do that by creating a new table and reverse the columns and rows.

$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);

Btw, $result['xxx'] won't work, the 'xxx' should be replaced with the correct key.

1 Comment

I prefer this way. A really good solution and makes it very easy to work with the data afterwards. Thank you very much!
0

I had kind of similar question. I was getting results back from a code in the form of JSON. When I used json_decode I noticed via var_dump method that during decoding some objects were created inside the array.

The var_dump you see below is for my var

$result.

If I want to access "status" array from my var I used the following which worked just fine :)

$result[0]->status

I wanted the data in that which had my query results.

array(1) {
  [0]=>
  object(stdClass)#3 (3) {
    ["status"]=>
    string(9) "Connected"
    ["message"]=>
    string(34) "Connected to database successfully"
    ["data"]=>
    array(1) {
      [0]=>
      object(stdClass)#2 (10) {
        ["id"]=>
        string(36) "cc569871-6544-11e3-945d-0e184c35292b"
        ["login_name"]=>
        string(22) "[email protected]"
        ["login_password"]=>
        string(8) "Lead6291"
        ["notes"]=>
        NULL
        ["created_by"]=>
        string(7) "default"
        ["created_on"]=>
        string(19) "2013-12-15 12:52:46"
        ["last_modified_by"]=>
        string(7) "default"
        ["last_modified_on"]=>
        string(19) "2013-12-15 12:52:46"
        ["is_current"]=>
        string(3) "yes"
        ["is_active"]=>
        string(3) "yes"
      }
    }
  }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.