Bir API çağrım var. Arama XML'i geri döndürür, XML'e bir diziye dönüşür ve sonra jsonp çağrısında yanıtı geri göndermek için json_encode'u kullanırım. Yaptığım şey çalışıyor ancak API, bir duruma göre filtrelememe, başlangıç ve bitiş zamanlarına göre filtreleme yapmamı ve odanın müsait olduğundan emin olmamı sağlıyor.Filtre Dizisi veya Başlangıç ve Bitiş Zamanı arasındaki süreye sahip XML.
Birkaç jsponp çağrısı ile deliriyor. Yine, sahip olduğum şey çalışıyor ama sonuçlarla bir kez daha süzgeç etmenin bir yolunu bulmam gerekiyor. Doğru durumu ve doğru tarihi döndürdüm, ancak hala zamanları filtrelemem gerekiyor. Saat şu an 10:29 ise, saat 10: 30'a kadar rezerve edilmediğinden rezervasyon yaptırmak istemiyorum. Yani, şu anki saatim 10:29 ise, dizimdeki etkinliklerimi filtrelemem gerekiyor ve yalnızca şu anki zamanı olan başlangıç ve bitiş zamanı olan etkinlikleri göstermem gerekiyor.
Dizimde 10-11 arası bir rezervasyon kalmalı, ancak dizimde 2-4 arası bir rezervasyon gösterilmemelidir. Dizinin ilk önce döndüğü bir XML belgesinin, bir dizinin, ardından JSON'un dediğim gibi teknik olarak filtrelemek için her türlü işi kullanabilirim. PHP süzmek için PHP, PHP süzmek için dizisi. Javascript bile PHP dosyasının ajax çağrısı ile hazır olduğunu destekliyor.
Dizim JSON'a dönmeden ve dönüş yapmadan önce. Filtre ettiğim zamanlar TimeEventStart ve TimeEventEnd olmalıdır. Geçerli Javascript saatini veya PHP tarih fonksiyon zamanını kullanabilirim. Ya diziyi filtreleyebilir veya süzmek için XMLPath gibi bir şey kullanabilirim. En verimli olandan emin değil ve en iyi şekilde çalışır.
$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"
]
}
]
}
}
;
Dizimde XML'deki bir SOAP çağrısından döndürülüyor. Geri XML alma ve Sonra yayınlanmıştır diziye koymak xmlToArray adlı bir işlev kullanıyorum
$sxml = simplexml_load_string($xml)
kullanıyorum.
$axml = xmlToArray($sxml);
Bir diziye ve daha sonra JSON'a dönüştürmeden önce XML budur.
<?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>
Xpath'i, XML düğümlerini getirmek/filtrelemek için kullanabilirsiniz. – ThW
Orijinal veri kaynağını (XML) verebilir misiniz? Bir diziye dönüştürmek, verilerin kaybedilmesi anlamına gelir. – ThW
Dizinin iyi olduğuna inanıyorum. Birkaç ekstra, gerekli olmayan XML öğelerini çıkardım. Bunu benim için daha da zorlaştırmak, Doğu Zaman'ım ve projenin Pasifik olması gerekiyor. Sağlanan cevabın yolunda olduğuna inanıyorum, sadece zamanı düzeltmem gerekiyor. – donlaur