PHP add elements to multidimensional array with array_push

北战南征 提交于 2019-11-26 12:08:35

问题


I have a multidimensional array $md_array and I want to add more elements to the sub-arrays recipe_type and cuisine coming from a loop that reads data from a table.

In the loop, I create a new table $newdata for each row:

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

and then, using array_push() I need to append the $newdata arrays to the following multidimensional array:

$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\' => \'\'
        )
      ) 
    );

Whats the syntax for adding a new element (array) to the recipe_type array with array_push? I could never get my head around multidimensional arrays and I\'m a bit confused.


回答1:


if you want to add the data in the increment order inside your associative array you can do this:

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

// for recipe

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

//for cuisine

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

this will get added to the recipe or cuisine depending on what was the last index.

Array push is usually used in the array when you have sequential index: $arr[0] , $ar[1].. you cannot use it in associative array directly. But since your sub array is had this kind of index you can still use it like this

array_push($md_array["cuisine"],$newdata);



回答2:


As in the multi-dimensional array an entry is another array, specify the index of that value to array_push:

array_push($md_array['recipe_type'], $newdata);


来源:https://stackoverflow.com/questions/16308252/php-add-elements-to-multidimensional-array-with-array-push

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!