2013-04-30 2 views
36

Ho un array multidimensionale $ md_array e voglio aggiungere più elementi ai sotto-array tipo_richiesta e cucina provenienti da un ciclo che legge i dati da una tabella.PHP aggiunge elementi all'array multidimensionale con array_push

Nel ciclo, che crea una nuova tabella $ newdata per ogni riga:

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

e quindi, usando array_push() devo aggiungere le matrici $ NewData al seguente matrice multidimensionale:

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

Qual è la sintassi per l'aggiunta di un nuovo elemento (array) all'array recipe_type con array_push? Non riuscirò mai a capire gli array multidimensionali e sono un po 'confuso.

risposta

54

se si desidera aggiungere i dati nell'ordine incremento all'interno del vostro array associativo è possibile fare questo:

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

// for recipe 

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

//for cuisine 

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

questo otterrà aggiunto alla ricetta o cucina a seconda di quello che era l'ultimo indice.

L'array push viene in genere utilizzato nell'array quando si dispone di un indice sequenziale: $ arr [0], $ ar [1] .. non è possibile utilizzarlo direttamente nell'array associativo. Ma dal momento che la matrice sub si ha questo tipo di indice è ancora possibile utilizzare in questo modo

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

Ecco una domanda: prima di array_push, sto aggiungendo una nuova riga al database e questa riga ha bisogno di essere legati da id all'elemento dell'array. Quindi, se '$ id = mysql_insert_id()', allora faccio '$ md_array [" recipe_type "] [$ id] = $ newdata', corretto? – bikey77

11

Come nella matrice multi-dimensionale di una voce è un altro array, specificare l'indice di quel valore per array_push:

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