2012-01-28 16 views
0

我無法從對象訪問變量。對象從一個API Feed中的和var_dump看起來是這樣的:將simpleXML中的數據重新設置爲數組

object(stdClass)#2 (1) { 
    ["GetBookingsResult"]=> 
    string(189227) "<Bookings> 
    <Data> 
    <BookingDate>2012-01-06T00:00:00-06:00</BookingDate> 
    <StartBookingDate>2012-01-06T00:00:00-06:00</StartBookingDate> 
    <RoomDescription>Dorm A</RoomDescription> 
    <TimeEventStart>2012-01-06T15:00:00-06:00</TimeEventStart> 
    <TimeEventEnd>2012-01-07T00:00:00-06:00</TimeEventEnd> 
    <GroupName>Family Retreat</GroupName> 
    <EventName>Family Retreat</EventName> 
    <SetupTypeDescription>(none)</SetupTypeDescription> 
    <SetupCount>27</SetupCount> 
    <ReservationID>1222</ReservationID> 
    <EventCoordinator /> 
    <GroupID>12</GroupID> 
    <VIP xml:space="preserve"> </VIP> 
    <VIPEvent>false</VIPEvent> 
    <ClosedAllDay>false</ClosedAllDay> 
    <OpenTime>1900-01-01T00:00:00-06:00</OpenTime> 
    <CloseTime>1900-01-01T00:00:00-06:00</CloseTime> 
    <GroupTypeDescription>Religious - Conference</GroupTypeDescription> 
    <EventTypeDescription>Retreat</EventTypeDescription> 
    <Contact>Phyllis 0000000000</Contact> 
    <AltContact /> 
    <BookingID>29512</BookingID> 
    <TimeBookingStart>2012-01-06T15:00:00-06:00</TimeBookingStart> 
    <TimeBookingEnd>2012-01-07T00:00:00-06:00</TimeBookingEnd> 
    <GMTStartTime>2012-01-06T15:00:00-06:00</GMTStartTime> 
    <GMTEndTime>2012-01-07T00:00:00-06:00</GMTEndTime> 
    <BuildingCode>Asb</BuildingCode> 
    <Building>Dormitory</Building> 
    <RoomCode>ASB A</RoomCode> 
    <Room>Dorm A</Room> 
    <RoomID>181</RoomID> 
    <BuildingID>20</BuildingID> 
    <StatusID>1</StatusID> 
    <StatusTypeID>-14</StatusTypeID> 
    <EventTypeID>1</EventTypeID> 
    <GroupTypeID>1</GroupTypeID> 
    <DateAdded>2011-01-09T08:25:02.72-06:00</DateAdded> 
    <AddedBy>B Jordan</AddedBy> 
    <DateChanged>2012-01-08T08:34:23.2-06:00</DateChanged> 
    <ChangedBy>J Smith</ChangedBy> 
    </Data> 

    <Data> 
    <BookingDate>2012-01-06T00:00:00-06:00</BookingDate> 
    <StartBookingDate>2012-01-06T00:00:00-06:00</StartBookingDate> 
    <RoomDescription>Dorm A1</RoomDescription> 
    <TimeEventStart>2012-01-06T15:00:00-06:00</TimeEventStart> 
    <TimeEventEnd>2012-01-07T00:00:00-06:00</TimeEventEnd> 
    <GroupName>Family Retreat</GroupName> 
    <EventName>Family Retreat</EventName> 
    <SetupTypeDescription>(none)</SetupTypeDescription> 
    <SetupCount>27</SetupCount> 
    <ReservationID>1222</ReservationID> 
    <EventCoordinator /> 
    <GroupID>12</GroupID> 
    <VIP xml:space="preserve"> </VIP> 
    <VIPEvent>false</VIPEvent> 
    <ClosedAllDay>false</ClosedAllDay> 
    <OpenTime>1900-01-01T00:00:00-06:00</OpenTime> 
    <CloseTime>1900-01-01T00:00:00-06:00</CloseTime> 
    <GroupTypeDescription>Religious - Conference</GroupTypeDescription> 
    <EventTypeDescription>Retreat</EventTypeDescription> 
    <Contact>Phyllis 0000000000</Contact> 
    <AltContact /> 
    <BookingID>29512</BookingID> 
    <TimeBookingStart>2012-01-06T15:00:00-06:00</TimeBookingStart> 
    <TimeBookingEnd>2012-01-07T00:00:00-06:00</TimeBookingEnd> 
    <GMTStartTime>2012-01-06T15:00:00-06:00</GMTStartTime> 
    <GMTEndTime>2012-01-07T00:00:00-06:00</GMTEndTime> 
    <BuildingCode>Asb</BuildingCode> 
    <Building>Dormitory</Building> 
    <RoomCode>Asb A1</RoomCode> 
    <Room>Dorm A1</Room> 
    <RoomID>7</RoomID> 
    <BuildingID>20</BuildingID> 
    <StatusID>1</StatusID> 
    <StatusTypeID>-14</StatusTypeID> 
    <EventTypeID>1</EventTypeID> 
    <GroupTypeID>1</GroupTypeID> 
    <DateAdded>2011-01-09T08:25:02.72-06:00</DateAdded> 
    <AddedBy>P Jordan</AddedBy> 
    <DateChanged>2012-01-08T08:34:23.2-06:00</DateChanged> 
    <ChangedBy>J Smith</ChangedBy> 
    </Data> 
</Bookings>" 
} 

我希望能夠重新安排這回來到一個數組的信息,這樣我可以按日期的事件,然後命令他們通過EventName。下面是我的代碼:

$xml = simplexml_load_string($result->GetBookingsResult); 

$list=''; 
    foreach($xml as $event){ 
     $st_date = lvmDateFormat($event->TimeBookingStart,'name');//function reformats date 
     $en_date = lvmDateFormat($event->TimeBookingEnd,'name'); 
     $name = lvmDateFormat($event->TimeBookingStart,'cal'); 
     $ename = $event->EventName; 
$events[lvmDateFormat($event->TimeBookingStart,'name')][$st_date] = array(
      'EventName' => $ename 
      ,'Date' => $name 
      ,'TimeEventStart' => $st_date 
      ,'TimeEventEnd' => $en_date 
     ); 
    } 

如果我附和了$event->EventName;它看起來很好,但是當我嘗試將其添加到一個數組它回來像這樣:

[EventName] => SimpleXMLElement Object 
       (
        [0] => UMW Training Event 
       ) 

我在做什麼錯在這裏?

Ta

回答

2

當您回顯對象時,它會轉換爲字符串。所以它會出現(因爲SimpleXMLElement在內部定義了__toString()方法)就像您想要的那樣 - 但$event變量的類型仍然是SimpleXMLElement類型的對象。

如果你的cast it爲一個字符串,你可以很容易地將它作爲字符串存儲在數組中。嘗試改變這一行:

$ename = $event->EventName; 

...這樣的:

$ename = (string) $event->EventName; 
+0

知道這將是簡單的東西!非常感謝! – TH1981 2012-01-28 15:40:11

相關問題