2013-03-20 18 views
7

Sto costruendo un modulo di invio di 3 pagine e mi piacerebbe che tutti i risultati $ _POST fossero archiviati in una singola variabile di sessione.Aggiunta di una matrice all'array esistente senza richiamare una nuova chiave

Quindi pagina 1 inizia con la creazione della matrice e aggiungendo il primo lotto dei dati post:

$_SESSION['results'] = array(); 
$_SESSION['results'] = $_POST // first lot of post data 

Questa grande opera e restituisce un array come:

Array 
(
    [name] => bob 
    [address] => 1 foobar way 
    [age] => 100 
) 

Così, quando ho la resuts dalla pagina 2, voglio semplicemente aggiungerli alla matrice esistente senza invocare un nuovo array + chiave

array_push($_SESSION['results'], $_POST); //second lot of post data 

per ottenere qualcosa di simile:

Array 
(
    [name] => bob 
    [address] => 1 foobar way 
    [age] => 100 
    [job] => rubbish php dev 
    [salary] => 1000 
) 

Ma invece ottengo:

Array 
(
    [name] => bob 
    [address] => 1 foobar way 
    [age] => 100 
    [0] => Array 
    (
     [job] => rubbish php dev 
     [salary] => 1000 
    ) 
) 

Ancora più fastidioso è che sono sicuro che ho avuto questo lavoro correttamente prima ho ottimizzato il codice. Che cosa sto facendo di sbagliato?

+1

si sta cercando array_merge – ITroubs

risposta

6

È anche possibile utilizzare il + operator:

$combined = $_SESSION['results'] + $_POST; 
+1

Grazie per quello. Qualche idea se questo ha un sovraccarico minore rispetto all'utilizzo della funzione array_merge? – James

+0

@ user2189903 Probabilmente lo indovinerò, ma dovresti fare un benchmark per essere sicuro. – jeroen

3

array_merge() è la funzione che stai cercando.

+1

Che fraggle rock Io sono! Avevo array_merge ma l'ho cambiato in array_push. Grazie per le risposte veloci ragazzi. – James

Problemi correlati