SOAPサービスの場合、同じタイプのネストされたオブジェクトの任意の数を持つことができるオブジェクトを生成する必要があります。私が思いついた唯一の実用的な解決策はevalを使った解決策でした。実際には、$ nestedObjArrayのオブジェクトはかなり大きくなっています。以下の3文を生成し動的ネストされたオブジェクトにevalを使用する
$nestedObjArray = array();
$nestedObjArray[] = new stdClass();
$nestedObjArray[] = new stdClass();
$nestedObjArray[] = new stdClass();
$finalObj = new stdClass();
for ($i = 0; $i < count($nestedObjArray); $i++) {
$nestedStr = str_repeat("->nested", $i);
eval('$finalObj->nested'.$nestedStr.' = $nestedObjArray[$i];');
}
:
$finalObj->nested = $nestedObjArray[0];
$finalObj->nested->nested = $nestedObjArray[1];
$finalObj->nested->nested->nested = $nestedObjArray[2];
これはうまく動作しますが、かなり醜いです。誰かがよりエレガントなソリューションを考えることができますか?ところで、次の代わりにevalラインが動作しません:
$finalObj->nested{$nestedStr} = $nestedObjArray[$i];
はい、明らかにこれが最適な解決策です。私は自分自身を試した最初の解決策であると私は誓っていたかもしれません。どういうわけか私は$ innerObjを自分自身で上書きし続けました。私は寝る必要があると思う。ありがとうございました。 – Bas