Sono nuovo nella programmazione e ho appena iniziato il php come due mesi fa. Finora mi sembrava di capirlo sempre di più. Ma ora sono perplesso. Ho un ciclo foreach che non passerà attraverso l'array che sto alimentando. Ho controllato la sintassi e la logica più e più volte e non riesco a trovare il problema. Probabilmente sto facendo qualcosa di stupido, ma ho bisogno del tuo aiuto per scoprire di cosa si tratta.PHP foreach non looping
Questo codice fa parte di uno script per consentire a un utente che ha effettuato l'accesso di modificare le proprie informazioni personali. Metto i dati da $_POST
in un array ed alimentarli (con la session_user_id
) al mio funzione wijzig_gegevens()
:
if (empty($_POST) === false && empty($errors) === true) {
$gegevens = array(
'voornaam' => $_POST['voornaam'],
'achternaam' => $_POST['achternaam'],
'emailadres' => $_POST['emailadres']
);
wijzig_gegevens($session_gebruiker_id, $gegevens);
}
Ho verificato se $gegevens
è in realtà un array ed è; quando ho print_r($gegevens)
ricevo il seguente output (questo è un array associativo, giusto?):
Array ([voornaam] => Marieke [achternaam] => Schut [emailadres] => [email protected])
Così le informazioni vengono inviate alla mia funzione wijzig_gegevens()
. Quando eseguo il $gegevens
$gegevens
e il mio codice primario , viene visualizzato lo stesso array di cui sopra. Quindi $gegevens
arriva in wijzig_gegevens()
ed è ancora un array.
Quindi il wijzig_gegevens()
dovrebbe fare la sua parte. Alla fine dovrebbe aggiornare il database, ma per ora I/m sta solo cercando di farlo produrre le coppie chiave/valore dall'array. Ecco la funzione:
function wijzig_gegevens($gebruiker_id, $gegevens) {
global $db;
$gebruiker_id = (int)$gebruiker_id;
foreach($gegevens as $key => $value) {
return $key.$value;
}
}
mi aspettavo che il foreach
per visualizzare 3 set di coppie chiave/valore. Ma per qualche ragione viene visualizzato solo il primo coppia chiave/valore:
voornaamMarieke
Questo mi è stato sconcertante per più di un giorno all'altro, in modo da sto sperando che qualcuno possa aiutarmi a trovare il mio errore.
You' ho ottenuto un 'return' all'interno di un ciclo. Quando colpisce il 'return', è tutto. La chiamata alla funzione è finita. Invece di 'return', potresti usare' echo'. Ma non dovresti davvero "echo" da una funzione (dipendente). Quindi è possibile concatenare una variabile e restituire * dopo * il ciclo 'foreach'. –
Dovresti veramente scrivere il codice in inglese lol: D – DanFromGermany
Ottimo lavoro nel dichiarare il problema e le tue osservazioni molto chiaramente. – mwittrock