2011-01-23 53 views
2

PHPの初心者に手伝ってください。私は理由が送られたSOAPメッセージであり、動的に後で再読み込みする配列にvariabled作成の負荷を置くしようとしているより少ない複雑な配列を作成しようとしている混乱とイムです: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') 
     )) 
    ) 
); 

これは非常に近く、それはあなたがarray、各「場所」で、各'Place A'を包むだろう持っているまさに複製作るために、あなたが探しているものを生成しますが、いくつかの変数$fooに独自の割り当てになるだろう(私は仮定これは実際にあなたが望むものではなく、もっと直感的なものかもしれません)。

+0

これは何の後です。私はちょうど配列に物事をrepeatidly追加する方法を知らなかった。私は、各場所に数値の配列IDを与えるときに、違法なオフセットやその他のオフセットエラーが発生し続けました。 – goingsideways

0

「複雑ではない」配列を使用する場合は、2つの配列、1つの前の場所、1つの場所をbとし、array_merger()http://www.php.net/manual/en/function.array-merge.phpを使用してマージします。

マニュアルの配列機能の制御構造を調べてください。肥大した配列をコード化する多くの異なる方法。

+0

が合意した。最初の配列は麻痺し、データはすべてショップの上にあります。私はそれをメモリに保存して大きなものを取り除くことができる1つの配列に設定しようとしています。 – 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; 
    } 
} 
関連する問題