Я использую службу XML API и SOAP для получения некоторых данных. Я использую приведенный ниже код для сокета hotelCode (многомерный валидный).
<?php
$hotelCodes = array() ;
$availHotels = $checkAvailability->availableHotels ;
foreach($availHotels as $hotel){
$hotelCodes[] = $hotel->hotelCode ;
}
?>
И ниже я повторяю их
<li>
<?php echo $hotelCodes[0];?></li>
<li>
<?php echo $hotelCodes[1];?></li>
<li>
<?php echo $hotelCodes[2];?>
</li>
<li>
<?php echo $hotelCodes[3];?>
</li>
Думайте, что SOAP отвечает всеми доступными гостиничными кодами, которые доступны для этого определенного поиска, который я сделал. я получаю ответ, как показано ниже:
- ABCDE - This is Hotel Code 0 and it the code of Hotel Y / Double standard Room / Room Only
- ABCDE - This is Hotel Code 0 and it the code of Hotel Y / Double standard Room / Breakfast
- ZXCVB - This is Hotel Code 0 and it the code of Hotel X / Double standard Room / Room Only
- ABCDE - This is Hotel Code 0 and it the code of Hotel Y / Twin Toom / Room Only
print_r($hotelCodes);
является
Array ( [0] => ABCDE [1] => ABCDE[2] => ZXCVB [3] => ABCDE)
Как я могу сортировать $hotelCodes[]
поэтому я могу получить уникальные значения (уникальные гостиничные коды)
Я сейчас пытаюсь:
<?php
$hotelCodes = array() ;
$availHotels = $checkAvailability->availableHotels ;
foreach($availHotels as $hotel){
$hotelCodes[] = $hotel->hotelCode ;
$result = array_unique($hotelCodes);
print_r($result);
}
?>
Print_r:
Array ( [0] => ITOI6P ) Array ( [0] => ITOI6P [1] => ITR03M ) Array ( [0] => ITOI6P [1] => ITR03M ) Array ( [0] => ITOI6P [1] => ITR03M [3] => ITJ64C ) Array ( [0] => ITOI6P [1] => ITR03M [3] => ITJ64C ) Array ( [0] => ITOI6P [1] => ITR03M [3] => ITJ64C [5] => ITRC24 )
И эхо:
<li><?php echo $result[0];?></li> - displays : ITOI6P
<li><?php echo $result[1];?></li> - displays : ITR03M
<li><?php echo $result[2];?></li> - displays : empty
<li><?php echo $result[3];?></li> - displays : ITJ64C
<li><?php echo $result[4];?></li> - displays : empty
<li><?php echo $result[5];?></li> - displays : ITRC24
Как я могу получить все из них, заполненных очередным порядком, в соответствии с уникальными гостиничными кодами?
Если вам нужны только уникальные коды, просто вызовите array_unique
в массив кодов. Если вам нужна информация для всех отелей с заданным кодом, вы можете создать это как часть своего цикла:
$hotelCodes = array() ;
$availHotels = $checkAvailability->availableHotels ;
foreach($availHotels as $hotel){
if (!isset($hotelCodes[$hotel->hotelCode])) {
$hotelCodes[$hotel->hotelCode] = array();
}
// you could ofcourse just take specific info from $hotel and put it in here.
$hotelCodes[$hotel->hotelCode][] = $hotel;
}
Вы можете использовать функцию array_unique, которая удалит дубликаты. Прежде чем применять это, вы можете захотеть сделать array_flip, чтобы ваши гостиничные коды теперь были вашими значениями, а затем наоборот.