2015-01-08 4 views
0

Я использую службу XML API & SOAP, чтобы получить некоторые данные. Я использую приведенный ниже код для сокета hotelCode (многомерный валидный).Сортировка многомерной переменной PHP

<?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 отвечает всем availeble hotelcodes, которые availeble для этого определенного поиска, я сделал. я получить ответ, как показано ниже, например:

- 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 is :

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

Вы только пытаетесь получить коды или же вам нужны данные для каждого отеля, имеющего этот код также? – prodigitalson

+0

Мне нужно только коды этого шага. Данные, которые есть у каждого отеля, я могу вытащить его на основе кода отеля на отдельной странице (подробная страница). –

ответ

0

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

2

Если вам просто нужны уникальные коды, просто позвоните array_unique по массиву кодов. Если вам нужна информация для всех отелей с заданным кодом, то вы можете создать, что как часть вашего цикла InstEd:

$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; 
} 
Смежные вопросы