2011-01-23 4 views
2

Привет, ребята, пожалуйста, приложите руку к новичкам PHP. Я пытаюсь поставить груз динамически созданный variabled в массив, чтобы перечитать позже, причиной является сообщение SOAP отправлено беспорядок и им пытаются создать менее сложный массив:Динамическое создание массивов с использованием PHP

$placea = "place a"; 
$placeb = "place b"; 

$myarray = array(); 

echo "<pre>"; 
print_r($myarray); 
echo "</pre>"; 

то, что я хочу

Array 
(
    [0] => [Place A] => Array 
     (
      [0] => [Accommodation] => Array 
       (
        [RoomId] => 001 
        [RoomAvail] => true 
        [Date] => 12.04.2011 

       ) 
      [1] => [Accommodation] => Array 
       (
        [RoomId] => 002 
        [RoomAvail] => true 
        [Date] => 12.04.2011 

       ) 

     ) Array 
(
    [1] => [Place B] => Array 
     (
      [0] => [Accommodation] => Array 
       (
        [RoomId] => 101 
        [RoomAvail] => true 
        [Date] => 12.04.2011 

       ) 
      [1] => [Accommodation] => Array 
       (
        [RoomId] => 102 
        [RoomAvail] => true 
        [Date] => 12.04.2011 

       ) 

     ) 


) 

как я напишу это в php? извините, если его цветная и/или структура массива неверны

+0

Каковы данные, которые вы хотите найти в массиве? –

+0

сделать var_dump (soap_response); для просмотра данных – sissonb

+0

было бы интересно, но более 15000 строк. хватит фрагмента. но ответ дается ниже. :) спасибо – goingsideways

ответ

3

Так что вам просто нужно использовать инициализатор array повторно.

Если вы хотите инициализировать массив в PHP с некоторыми значениями, скажем, с 1 по 4, вы делаете вызов, как:

$foo = array(1, 2, 3, 4); 

И если вы хотите, чтобы ассоциативный массив, в котором хранятся некоторые ключевые/пар значений, вы делаете вызов, как:

$foo = array('key' => 'value', 'other key' => 'other value'); 

Но вы можете, конечно, гнездятся вызовов, и смешивать и сочетать слои ассоциативных и не ассоциативные массивы, чтобы достичь чего-то, как ваш пример, например:

$foo = array( 
    'Place A' => array( 
     // note use of first array on the next line is 
     // to generate structure like [0] => 'Accomodation' => ... 
     array('Accomodation' => array( 
      'RoomId' => '001', 
      'RoomAvail' => true, 
      'Date' => '12.04.2011') 
     )), 
     array('Accomodation' => array( 
      'RoomId' => '002', 
      'RoomAvail' => true, 
      'Date' => '12.04.2011') 
     )) 
    ), 
    'Place B' => array( 
     array('Accomodation' => array( 
      'RoomId' => '101', 
      'RoomAvail' => true, 
      'Date' => '12.04.2011') 
     )), 
     array('Accomodation' => array( 
      'RoomId' => '102', 
      'RoomAvail' => true, 
      'Date' => '12.04.2011') 
     )) 
    ) 
); 

Это будет почти производить то, что вы ищете, чтобы сделать его повторить то, что у вас есть вы бы обернуть каждый 'Place A' с array и каждое «место» получит свое собственное назначение в некоторой переменной $foo (я предположил, это на самом деле не то, что вы хотели и что-то написало, может быть, немного интуитивно понятное).

+0

это то, что им после. я просто не знал, как повторить добавление материала в массив. Я продолжал получать незаконные смещения и другие ошибки смещения при попытке дать каждому месту идентификатор числового массива. – goingsideways

0

Если вы хотите иметь «менее сложный» массив, у вас есть два массива, один из которых помещает a и один для места b, а затем объединяет их с помощью array_merger() http://www.php.net/manual/en/function.array-merge.php.

Изучите структуры управления функциями массива в руководстве. Много разных способов достижения раздутых массивов, угадывающих ваш код.

+0

согласовано. первый массив - махоозитивный, а данные - во всем магазине. im пытается установить его в один массив, который я могу хранить в памяти и избавиться от большого. – goingsideways

0

Это будет динамически создавать массив.

foreach($soapResponse as $key1 => $value1){ 
    foreach($value as $key2 => $value2){ 
     // $key1 = Place A or B 
     // value1 = array of values 
     $arrayResponse[$key1][$key2] = $value2; 
    } 
} 
Смежные вопросы