循环处理SOAP响应


Looping through a SOAP response

我创建了一个应用程序,它发出SOAP请求并获得响应。这工作得很好,但我有麻烦通过所有单独的结果,以组织成一个数组。下面是响应:

stdClass Object
    (
    [FITgymlistResult] => stdClass Object
        (
        [FITgym] => Array
            (
                [0] => stdClass Object
                    (
                        [GYMGUID] => 45124542-bca5-e211-8f4a-00155d007722
                        [GYMNAME] => Belfast
                        [Postcode] => 
                        [Phone] => 
                        [Email] => belfast@fitspace.co.uk
                    )
                [1] => stdClass Object
                    (
                        [GYMGUID] => aece7776-bca5-e211-8f4a-00155d007722
                        [GYMNAME] => Bournemouth
                        [Addressline1] => St Paul's Road
                        [Postcode] => 
                        [Phone] => 
                        [Email] => Bournemouth@fitspace.co.uk
                    )
                [2] => stdClass Object
                    (
                        [GYMGUID] => 8eaa258e-bca5-e211-8f4a-00155d007722
                        [GYMNAME] => Bradford
                        [Postcode] => 
                        [Phone] => 
                        [Email] => Bradford@fitspace.co.uk
                    )
                [3] => stdClass Object
                    (
                        [GYMGUID] => 935bfdca-bca5-e211-8f4a-00155d007722
                        [GYMNAME] => Islington
                        [Postcode] => 
                        [Phone] => 
                        [Email] => holloway@fitspace.co.uk
                    )
                [4] => stdClass Object
                    (
                        [GYMGUID] => fe104008-bda5-e211-8f4a-00155d007722
                        [GYMNAME] => Lincoln
                        [Postcode] => 
                        [Phone] => 
                        [Email] => lincoln@fitspace.co.uk
                    )
                [5] => stdClass Object
                    (
                        [GYMGUID] => ff3cd339-bda5-e211-8f4a-00155d007722
                        [GYMNAME] => Mitcham
                        [Postcode] => 
                        [Phone] => 
                        [Email] => Mitcham@fitspace.co.uk
                    )
                [6] => stdClass Object
                    (
                        [GYMGUID] => 496e8149-bda5-e211-8f4a-00155d007722
                        [GYMNAME] => Nottingham
                        [Postcode] => 
                        [Phone] => 
                        [Email] => Nottingham@fitspace.co.uk
                    )
                [7] => stdClass Object
                    (
                        [GYMGUID] => 48f26656-bda5-e211-8f4a-00155d007722
                        [GYMNAME] => Sheffield
                        [Postcode] => 
                        [Phone] => 
                        [Email] => Sheffield@fitspace.co.uk
                    )
                [8] => stdClass Object
                    (
                        [GYMGUID] => 1c136968-bda5-e211-8f4a-00155d007722
                        [GYMNAME] => Woolwich
                        [Postcode] => 
                        [Phone] => 
                        [Email] => Woolwich@fitspace.co.uk
                    )
            )
    )

)

循环遍历每个条目的最好和最快的方法是什么?由于

假设该对象存储在$ret变量中,而您希望将单个结果存储在数组$data中。

$data = array();
foreach($ret->FITgymlistResult->FITgym as $item)
{
    $data[] = get_object_vars($item);
}

get_object_vars将对象中的所有变量及其值转储为数组

在foreach循环中,您可以像这样访问、打印或存储项数据:

echo $item->email;
$test = $item->GYMNAME;
$data[] = array($item->email, $item->GYMNAME);

在数组上使用foreach循环:

foreach( $response->FITgymlistResult->FITgym as $row )
{
    var_dump( $row->GYMGUID, $row->GYMNAME );
}

参见:stdClass对象和foreach循环