web-dev-qa-db-ja.com

PHP array_pushを使用して多次元配列に要素を追加します

多次元配列$ md_arrayがあり、サブ配列recipe_typeとテーブルからデータを読み取るループからの料理にさらに要素を追加したいと思います。

ループでは、各行に新しいテーブル$ newdataを作成します。

$newdata =  array (
          'wpseo_title' => 'test',
          'wpseo_desc' => 'test',
          'wpseo_metakey' => 'test'
        );

そして、array_Push()を使用して、$ newdata配列を次の多次元配列に追加する必要があります。

$md_array= array (
     'recipe_type' => 
      array (
        18 => 
        array (
          'wpseo_title' => 'Salads',
          'wpseo_desc' => 'Hundreads of recipes for Salads',
          'wpseo_metakey' => ''
        ),
        19 => 
        array (
          'wpseo_title' => 'Main dishes',
          'wpseo_desc' => 'Hundreads of recipes for Main dishes',
          'wpseo_metakey' => ''
        )
      ),
     'cuisine' => 
      array (
        22 => 
        array (
          'wpseo_title' => 'Italian',
          'wpseo_desc' => 'Secrets from Sicily in a click',
          'wpseo_metakey' => ''
        ),
        23 => 
        array (
          'wpseo_title' => 'Chinese',
          'wpseo_desc' => 'Oriental dishes were never this easy to make',
          'wpseo_metakey' => ''
        ),
        24 => 
        array (
          'wpseo_title' => 'Greek',
          'wpseo_desc' => 'Traditional Greek flavors in easy to make recipies',
          'wpseo_metakey' => ''
        )
      ) 
    );

Array_pushでrecipe_type配列に新しい要素(配列)を追加するための構文は何ですか?多次元配列に頭を悩ませることは決してできず、少し混乱しています。

47
bikey77

連想配列内にインクリメント順にデータを追加したい場合、これを行うことができます:

$newdata =  array (
      'wpseo_title' => 'test',
      'wpseo_desc' => 'test',
      'wpseo_metakey' => 'test'
    );

// for recipe

$md_array["recipe_type"][] = $newdata;

//for cuisine

 $md_array["cuisine"][] = $newdata;

これは、最後のインデックスに応じて、レシピまたは料理に追加されます。

通常、配列プッシュは、シーケンシャルインデックス$ arr [0]、$ ar [1]がある場合に配列で使用されます。連想配列で直接使用することはできません。しかし、サブ配列にはこの種のインデックスがあるため、このように使用できます

array_Push($md_array["cuisine"],$newdata);
71
Dinesh

多次元配列の場合、エントリは別の配列であるため、その値のインデックスをarray_Pushに指定します。

array_Push($md_array['recipe_type'], $newdata);
15
dtech