Сортировать многомерную переменную PHP

0

Я использую службу 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

Как я могу получить все из них, заполненных очередным порядком, в соответствии с уникальными гостиничными кодами?

  • 0
    Вы только пытаетесь получить коды или вам нужны данные для каждого отеля, имеющего этот код?
  • 0
    Мне нужны только коды на этом этапе. Данные, которые есть в каждом отеле, я могу получить на основе кода отеля на отдельной странице (страница с подробностями).
Теги:
arrays
soap
variables

2 ответа

2

Если вам нужны только уникальные коды, просто вызовите 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;
}
0

Вы можете использовать функцию array_unique, которая удалит дубликаты. Прежде чем применять это, вы можете захотеть сделать array_flip, чтобы ваши гостиничные коды теперь были вашими значениями, а затем наоборот.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню