web-dev-qa-db-fra.com

PHP ajoute des éléments à un tableau multidimensionnel avec array_push

J'ai un tableau multidimensionnel $ md_array et je souhaite ajouter d'autres éléments aux sous-tableaux recipe_type et cuisine issus d'une boucle qui lit les données d'une table.

Dans la boucle, je crée une nouvelle table $ newdata pour chaque ligne:

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

et ensuite, en utilisant array_Push() je dois ajouter les tableaux $ newdata au tableau multidimensionnel suivant:

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

Quelle est la syntaxe pour ajouter un nouvel élément (tableau) au tableau recipe_type avec array_push? Je n'arrivais jamais à comprendre les tableaux multidimensionnels et je suis un peu confus.

47
bikey77

si vous voulez ajouter les données dans l'ordre d'incrément dans votre tableau associatif, vous pouvez faire ceci:

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

// for recipe

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

//for cuisine

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

cela sera ajouté à la recette ou à la cuisine en fonction du dernier indice.

Array Push est généralement utilisé dans le tableau lorsque vous avez un index séquentiel: $ arr [0], $ ar [1] .. vous ne pouvez pas l'utiliser directement dans un tableau associatif. Mais puisque votre sous-tableau a ce genre d'index, vous pouvez toujours l'utiliser comme ceci

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

Comme dans le tableau multidimensionnel, une entrée est un autre tableau, spécifiez l'index de cette valeur à array_Push:

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