Tôi có cuộc gọi API. Cuộc gọi trả về XML, tôi chuyển đổi thành XML thành một mảng và sau đó sử dụng json_encode để gửi trả lời trong một cuộc gọi jsonp. Những gì tôi đang làm là làm việc nhưng API không cho phép tôi lọc theo trạng thái, lọc theo thời gian bắt đầu và kết thúc và cũng đảm bảo rằng phòng có sẵn.Mảng lọc hoặc XML có thời gian giữa thời gian bắt đầu và kết thúc
Thật điên rồ với một số cuộc gọi jsponp. Một lần nữa, những gì tôi có đang làm việc nhưng tôi cần phải tìm ra cách để lọc thêm một lần nữa với kết quả của tôi. Tôi đã trả lại trạng thái chính xác và ngày chính xác, nhưng tôi vẫn phải lọc ra lần. Nếu bây giờ là 10:29 sáng, tôi không muốn hiển thị các phòng đã đặt bắt đầu lúc 10:30 sáng vì nó không được đặt trước 10:30 sáng. Vì vậy, nếu thời gian hiện tại của tôi là 10:29, tôi cần phải lọc qua các sự kiện trong mảng của mình và chỉ hiển thị các sự kiện có thời gian bắt đầu và kết thúc có thời gian hiện tại ở giữa.
Đặt phòng từ 10-11 sáng nên ở trong mảng của tôi nhưng đặt phòng từ 2-4 giờ sẽ không hiển thị trong mảng của tôi. Như tôi đã nói mảng trước tiên là một tài liệu XML được trả về, sau đó là một mảng, sau đó JSON nên về mặt kỹ thuật tôi có thể sử dụng bất cứ thứ gì hoạt động để lọc. PHP để lọc trong XML, PHP để lọc mảng. Thậm chí Javascript cũng cho rằng tệp PHP đã sẵn sàng bằng cuộc gọi ajax của tôi.
Đây là mảng của tôi trước khi tôi chuyển nó thành JSON và trả về. Thời gian tôi lọc phải là TimeEventStart và TimeEventEnd. Tôi có thể sử dụng thời gian Javascript hiện tại hoặc thời gian hàm ngày PHP. Tôi có thể lọc mảng hoặc sử dụng một cái gì đó như XMLPath để lọc. Không chắc chắn những gì là hiệu quả nhất và sẽ làm việc tốt nhất.
$axml = Array{
"Bookings":{
"Data":[
{
"BookingDate":[
"2014-05-09T00:00:00"
],
"RoomDescription":[
"Room06"
],
"TimeEventStart":[
"2014-05-09T14:00:00"
],
"TimeEventEnd":[
"2014-05-09T14:30:00"
],
"EventName":[
"Jake Long"
],
"SetupTypeDescription":[
"(none)"
],
"ReservationID":[
"137"
],
"OpenTime":[
"1900-01-01T00:00:00"
],
"CloseTime":[
"1900-01-01T00:00:00"
],
"EventTypeDescription":[
[
]
],
"BookingID":[
"709"
],
"TimeBookingStart":[
"2014-05-09T14:00:00"
],
"TimeBookingEnd":[
"2014-05-09T14:30:00"
],
"GMTStartTime":[
"2014-05-09T18:00:00"
],
"GMTEndTime":[
"2014-05-09T18:30:00"
],
"TimeZone":[
"ET"
],
"RoomCode":[
"R06"
],
"Room":[
"Room 6"
],
"RoomID":[
"34"
],
"StatusID":[
"3"
],
"EventTypeID":[
"0"
],
"DateAdded":[
"2014-05-09T13:47:29.087"
],
"DateChanged":[
"2014-05-09T13:47:29.087"
],
"ChangedBy":[
"Admin"
]
},
{
"BookingDate":[
"2014-05-09T00:00:00"
],
"RoomDescription":[
"Room06"
],
"TimeEventStart":[
"2014-05-09T18:00:00"
],
"TimeEventEnd":[
"2014-05-09T20:00:00"
],
"EventName":[
"Rob Brown"
],
"SetupTypeDescription":[
"(none)"
],
"ReservationID":[
"142"
],
"OpenTime":[
"1900-01-01T00:00:00"
],
"CloseTime":[
"1900-01-01T00:00:00"
],
"EventTypeDescription":[
[
]
],
"BookingID":[
"714"
],
"TimeBookingStart":[
"2014-05-09T18:00:00"
],
"TimeBookingEnd":[
"2014-05-09T20:00:00"
],
"GMTStartTime":[
"2014-05-09T22:00:00"
],
"GMTEndTime":[
"2014-05-10T00:00:00"
],
"TimeZone":[
"ET"
],
"RoomCode":[
"R06"
],
"Room":[
"Room 6"
],
"RoomID":[
"34"
],
"StatusID":[
"3"
],
"EventTypeID":[
"0"
],
"DateAdded":[
"2014-05-09T14:58:55.71"
],
"DateChanged":[
"2014-05-09T14:58:55.71"
],
"ChangedBy":[
"Admin"
]
},
{
"BookingDate":[
"2014-05-09T00:00:00"
],
"StartBookingDate":[
"2014-05-09T00:00:00"
],
"RoomDescription":[
"Room06"
],
"TimeEventStart":[
"2014-05-09T11:00:00"
],
"TimeEventEnd":[
"2014-05-09T12:00:00"
],
"EventName":[
"Jimmy James"
],
"SetupTypeDescription":[
"(none)"
],
"ReservationID":[
"141"
],
"OpenTime":[
"1900-01-01T00:00:00"
],
"CloseTime":[
"1900-01-01T00:00:00"
],
"EventTypeDescription":[
[
]
],
"BookingID":[
"713"
],
"TimeBookingStart":[
"2014-05-09T11:00:00"
],
"TimeBookingEnd":[
"2014-05-09T12:00:00"
],
"GMTStartTime":[
"2014-05-09T15:00:00"
],
"GMTEndTime":[
"2014-05-09T16:00:00"
],
"TimeZone":[
"ET"
],
"RoomCode":[
"R06"
],
"Room":[
"Room 6"
],
"RoomID":[
"34"
],
"StatusID":[
"1"
],
"EventTypeID":[
"0"
],
"DateAdded":[
"2014-05-09T14:58:15.17"
],
"DateChanged":[
"2014-05-09T14:58:15.17"
],
"ChangedBy":[
"Admin"
]
}
]
}
}
;
Mảng của tôi đang được trả về từ cuộc gọi SOAP bằng XML. Tôi lấy lại XML và sử dụng
$sxml = simplexml_load_string($xml)
Sau đó, tôi đang sử dụng hàm có tên xmlToArray để đưa nó vào mảng được đăng.
$axml = xmlToArray($sxml);
Đây là XML trước khi tôi chuyển đổi thành mảng và sau đó là JSON.
<?xml version="1.0" encoding="utf-8"?><Bookings>
<Data>
<BookingDate>2014-05-13T00:00:00</BookingDate>
<StartBookingDate>2014-05-13T00:00:00</StartBookingDate>
<RoomDescription>Room 06</RoomDescription>
<TimeEventStart>2014-05-13T10:00:00</TimeEventStart>
<TimeEventEnd>2014-05-13T10:30:00</TimeEventEnd>
<EventName>Jake Long</EventName>
<ReservationID>159</ReservationID>
<ClosedAllDay>false</ClosedAllDay>
<OpenTime>1900-01-01T00:00:00</OpenTime>
<CloseTime>1900-01-01T00:00:00</CloseTime>
<BookingID>731</BookingID>
<TimeBookingStart>2014-05-13T10:00:00</TimeBookingStart>
<TimeBookingEnd>2014-05-13T10:30:00</TimeBookingEnd>
<GMTStartTime>2014-05-13T14:00:00</GMTStartTime>
<GMTEndTime>2014-05-13T14:30:00</GMTEndTime>
<RoomCode>R09</RoomCode>
<Room>Room 9</Room>
<RoomID>37</RoomID>
<StatusID>3</StatusID>
<DateAdded>2014-05-13T08:38:22.36</DateAdded>
<DateChanged>2014-05-13T08:38:22.36</DateChanged>
</Data>
</Bookings>
Bạn có thể sử dụng Xpath để tìm nạp/lọc các nút XML. – ThW
Bạn có thể cung cấp nguồn dữ liệu gốc (XML) hay không. Chuyển đổi nó thành một mảng có nghĩa là mất dữ liệu. – ThW
Tôi tin rằng mảng là tốt. Tôi đã lấy ra một vài phần tử XML không cần thiết. Làm điều này khó khăn hơn với tôi là tôi là Eastern Time và dự án phải là Thái Bình Dương. Tôi tin rằng câu trả lời được cung cấp là đúng hướng, tôi chỉ cần có thời gian chính xác. – donlaur