Вставьте ассоциированный массив в другой массив

Я хотел бы вставить связанный массив в другой массив, но я не уверен, как это сделать. На данный момент имею следующее:

$rate_info = array(
    "hotel_rating" => $hotel->{'hotelRating'},
    "room_rate" => $hotel->{'RoomRateDetailsList'}->{'RoomRateDetails'}->{'RateInfo'}->{'ChargeableRateInfo'}->{'@total'},
    "currency" => $hotel->{'RoomRateDetailsList'}->{'RoomRateDetails'}->{'RateInfo'}->{'ChargeableRateInfo'}->{'@currencyCode'},
    "deep_link" => $hotel->{'deepLink'}
);

array_push($hotel_array[$hotel->{'name'}]["offers"],  "expedia" => $rate_info );

«Предложения» — это массив, все, что я хочу сделать, это добавить значение ключа с массивом внутри. Есть идеи? Все, что я, кажется, получаю в минуту, это ошибки синтаксического анализа.

ОБНОВИТЬ

Это вывод массива на данный момент

["offers"]=>
array(2) {
  ["LateRooms"]=>
  array(4) {
    ["hotel_rating"]=>
    int(4)
    ["room_rate"]=>
    string(6) "225.06"
    ["currency"]=>
    string(3) "USD"
  }
  [0]=>
  string(4) "test"
}

Как видите, вместо [0] я хотел бы ["site"]=>array()

Спасибо

Оливер


person ORStudios    schedule 23.05.2012    source источник
comment
Какой бит генерирует ошибки синтаксического анализа? Какие ошибки вы получаете?   -  person halfer    schedule 23.05.2012
comment
Кстати, вы можете заменить $hotel->{'RoomRateDetailsList'}->{'RoomRateDetails'} (и т. д.) на $hotel->RoomRateDetailsList->RoomRateDetails (и т. д.). Последний в конце (@total) тоже выглядит очень хитро - нужен ли @?   -  person halfer    schedule 23.05.2012
comment
Он возвращает ошибку синтаксического анализа для строки: array_push($hotel_array[$hotel-›{'name'}][offers], expedia =› $rate_info );   -  person ORStudios    schedule 23.05.2012
comment
Спасибо, знак @ — это имя поля, отправленное API.   -  person ORStudios    schedule 23.05.2012
comment
Прокомментируйте структуру вашего массива: должен ли «LateRooms» иметь только один отель (т.е. hotel_rating, room_rate, валюта)? Или это должен быть массив этих записей, чтобы можно было иметь несколько против LateRooms?   -  person halfer    schedule 23.05.2012
comment
Ваш ответ ниже решил проблему, спасибо. Мне просто нужно было изменить способ добавления новых значений в массив.   -  person ORStudios    schedule 23.05.2012


Ответы (2)


Я бы сделал это для назначения массива:

$hotel_array[$hotel->name]['offers']['expedia'] = $rate_info;

Убедитесь, что ваши предупреждения включены, чтобы вы знали, что массивы (и подмассивы) были настроены, прежде чем использовать их.

person halfer    schedule 23.05.2012

Вы впервые сделали это?

$hotel_array[$hotel->{'name'}] = array();

И тогда вы можете сделать:

array_push($hotel_array[$hotel->{'name'}]["offers"],  "expedia" => $rate_info );
person davidethell    schedule 23.05.2012
comment
Привет, см. выше, я обновил вопрос. Имя представляет собой ключевое значение, содержащее массив. Внутри массива есть еще один массив, называемый предложениями. - person ORStudios; 23.05.2012