[PHP] Ciclare array multidimensionali

trimalcione

Nuovo Utente
3 Lug 2018
1
0
1
Milano
ciao a tutti, ho un problema con il ciclo e la lettura di un array. Ora mi spiego:

ho una form html con 2 campi, data e importo, che invio tramite _post alla pagina php che ha il compito di elaborare i dati passati.

Tramite la form, l'utente può inserire quanto ha pagato in una certa data. I pagamenti possono essere diversi. Per cui, tramite un tasto, l'utente può creare nuove righe con campi data e importo. Il campo data è formato da tre input:

<form method="post" action="elabora.php">
<input placeholder="gg" type="text" name="insert_date_gg[]" id="insert_date_gg" />
<input placeholder="mm" type="text" name="insert_date_mm[]" id="insert_date_mm" />
<input placeholder="aaaa" type="text" name="insert_date_aaaa[]" id="insert_date_aaaa" />
</form>

L'utente, quindi, può dire di aver pagato 20€ il giorno 21/06/2017 e 30€ il giorno 03/07/2018.

Nella pagina elabora.php, dovrei ricomporre la data corretta per ognuno dei pagamenti e inserirla a DB inseme all'importo parziale.

Seguendo la form sopra, il vettore insert_date_gg[] conterrà 21 e 03, insert_date_mm[]" 06 e 07 e insert_date_aaaa[] conterrà 2017 e 2018.

Per ricomporre le date, ho provato ad annidare alcuni foreach come consigliato in questo forum, così:

$matrice = array($_POST['insert_date_aaaa'], $_POST['insert_date_mm'], $_POST['insert_date_gg']);

foreach($matrice as $chiave => $val){
foreach($val as $ch =>$valore){
$trasposta[$ch][$chiave]=$valore;
}
}
//ciclo di stampa
foreach($trasposta as $chiave =>$val){
foreach($val as $ch =>$valore){
echo $valore;
}
}

quello che ottengo è questo
2017062120180703

C'è qualche anima gentile che può darmi delle dritte per riuscire nel mio intento: ricomporre la data associata all'importo da inserire a DB?

grazie
 
ciao a tutti, ho un problema con il ciclo e la lettura di un array. Ora mi spiego:

ho una form html con 2 campi, data e importo, che invio tramite _post alla pagina php che ha il compito di elaborare i dati passati.

Tramite la form, l'utente può inserire quanto ha pagato in una certa data. I pagamenti possono essere diversi. Per cui, tramite un tasto, l'utente può creare nuove righe con campi data e importo. Il campo data è formato da tre input:

<form method="post" action="elabora.php">
<input placeholder="gg" type="text" name="insert_date_gg[]" id="insert_date_gg" />
<input placeholder="mm" type="text" name="insert_date_mm[]" id="insert_date_mm" />
<input placeholder="aaaa" type="text" name="insert_date_aaaa[]" id="insert_date_aaaa" />
</form>

L'utente, quindi, può dire di aver pagato 20€ il giorno 21/06/2017 e 30€ il giorno 03/07/2018.

Nella pagina elabora.php, dovrei ricomporre la data corretta per ognuno dei pagamenti e inserirla a DB inseme all'importo parziale.

Seguendo la form sopra, il vettore insert_date_gg[] conterrà 21 e 03, insert_date_mm[]" 06 e 07 e insert_date_aaaa[] conterrà 2017 e 2018.

Per ricomporre le date, ho provato ad annidare alcuni foreach come consigliato in questo forum, così:

$matrice = array($_POST['insert_date_aaaa'], $_POST['insert_date_mm'], $_POST['insert_date_gg']);

foreach($matrice as $chiave => $val){
foreach($val as $ch =>$valore){
$trasposta[$ch][$chiave]=$valore;
}
}
//ciclo di stampa
foreach($trasposta as $chiave =>$val){
foreach($val as $ch =>$valore){
echo $valore;
}
}

quello che ottengo è questo
2017062120180703

C'è qualche anima gentile che può darmi delle dritte per riuscire nel mio intento: ricomporre la data associata all'importo da inserire a DB?

grazie




salve, la cosa che ti posso dire è che puoi usare tranquillamente il seguente codice
HTML:
<input type="date" name="..." />
invece di stare a creare 3 input, e senza che stai poi a ricongiungere gli array
 
Quoto @qwertyy , ma la soluzione ovvia potrebbe essere:
Ciclo solo sulla prima variabile e prendo l'incremento delle altre basandomi sulla prima....
Ossia hp:
4 var- > giorno, mese, anno, orario
Scorrendo gli n-1 elementi di giorno (stando che l'ìinput è corretto) puoi recuperare l'iesimo elemento delle variabile mese,anno,orario senza impazzire...
 

Discussioni simili