請先閱讀下面的粗體行,然後再評論這可能是重複的。這與SimpleXML無關。將多維數組轉換爲XML
讓我首先展示如何佈置XML。請忽略名稱空間:
<hot:SearchHotels>
<hot:request>
<hot1:Destination>?</hot1:Destination>
<hot1:HotelCityName>?</hot1:HotelCityName>
<hot1:HotelLocationName>?</hot1:HotelLocationName>
<hot1:HotelName>?</hot1:HotelName>
<hot1:CheckIn>?</hot1:CheckIn>
<hot1:CheckOut>?</hot1:CheckOut>
<hot1:RoomsInformation>
<!--Zero or more repetitions:-->
<hot1:RoomInfo>
<hot1:AdultNum>?</hot1:AdultNum>
<hot1:ChildNum>?</hot1:ChildNum>
<!--Optional:-->
<hot1:ChildAges>
<!--Zero or more repetitions:-->
<hot1:ChildAge age="?"/>
</hot1:ChildAges>
</hot1:RoomInfo>
</hot1:RoomsInformation>
<hot1:MaxPrice>?</hot1:MaxPrice>
<hot1:StarLevel>?</hot1:StarLevel>
<hot1:AvailableOnly>?</hot1:AvailableOnly>
<hot1:PropertyType>?</hot1:PropertyType>
<hot1:ExactDestination>?</hot1:ExactDestination>
</hot:request>
</hot:SearchHotels>
在hot1下的通知:RoomsInformation裏面有RoomInfo。我應該能夠發送多個RoomInfo節點。 但我正在使用PHP類將數組轉換爲通過SOAP提交的此對象。
這裏是我的陣列之前,它被轉換爲對象:
$param = array(
"Destination" => $destcode,
"HotelCityName" => $city,
"HotelLocationName" => "",
"HotelName" => "",
"CheckIn" => date("Y-m-d", strtotime($checkin)),
"CheckOut" => date("Y-m-d", strtotime($checkout)),
"RoomsInformation" => array (
"RoomInfo" => array(
"AdultNum" => 2,
"ChildNum" => 1,
"ChildAges" => array(
"ChildAge" => array(
"age"=>11
)
)
),
"RoomInfo" => array(
"AdultNum" => 1,
"ChildNum" => 0,
"ChildAges" => array(
"ChildAge" => array(
"age"=>0
)
)
)
),
"MaxPrice" => 0,
"StarLevel" => 0,
"AvailableOnly" => "false",
"PropertyType" => "NotSet",
"ExactDestination" => "false"
);
$param = arrayToObject($param) ;
$obj = new stdClass();
$obj->request=$param;
$result = $test->SearchHotels($obj) ;
的問題是轉換爲對象之後,只有1 RoomInfo和最後一個。我的想法是因爲RoomsInformation數組有2個相同的KEY名稱。那我該如何做這項工作?
爲了您的信息,這裏是SOAP I類使用和arrayToObject功能:
[如何將數組轉換爲SimpleXML](http://stackoverflow.com/q/1397036/1503018) – sectus
如果使用SOAP,那麼php內置的SoapClient可以處理數組 – Fracsi
您可以'噸,而不是該陣列。不管你有多少個'RoomsInformation'條目,如果他們有相同的密鑰,他們確實只有一個。 –