4

Zend_Soap_Client を使用していて、次の問題が発生しています。

<parent>
    <child><name>abc</name></child>
    <child><name>def</name></child>
</parent>

複数の子要素がある場合、Zend は配列を返し、次のようにアクセスできます。

$result->parent->child[0]->name

ただし、子ノードが 1 つしかない場合は、次のようなオブジェクトを返します。

$result->parent->child->name

私のアプローチの何が問題なのか、またはどうすればそれを克服できるのか教えてください。

私のサンプルコード:

$client = new Zend_Soap_Client('url', array('wsdl'=>'url));
$result = $client->getResult();

Zend 1.9 を使用しています。PHP のネイティブ SoapClient でも同じ問題が発生します。

ありがとう!

4

1 に答える 1

9

Zend_Soap_Client個人的には、Zend バージョンは有益なものを何も追加しないため、代わりに使用する必要はないと思いますSoapClientが、一方で解決策は両方に適用されます。

SoapClientオリジナルには、多くのものを受け入れるoptions 配列パラメーターがあり、特に以下 ( ref ):

featuresオプションは、SOAP_SINGLE_ELEMENT_ARRAYS のビットマスクです...

このオプションを使用すると、soap 応答内のすべての配列構造は、含まれる要素が 1 つだけの場合、1 つの要素に縮小されず、そのまま残されます。その場合、常に配列にアクセスしているため、コンテンツに応じて切り替えるよりも簡単です。

例:

$s = new SoapClient($wsdl, array('features' => SOAP_SINGLE_ELEMENT_ARRAYS));
于 2013-09-30T06:35:44.947 に答える