Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP foreach not looping

Tags:

foreach

php

I'm new in programming and just started php like two months ago. So far I seemed to understand it more and more. But now I am stumped. I have a foreach loop that won't loop through the array I'm feeding it. I have checked the syntax and logic over and over again and can't find the problem. I'm probably doing something stupid, but I need your help finding out what it is.

This code is part of a script to allow a logged-in user to change his personal information. I put the data from $_POST in an array and feed it (with the session_user_id) to my function 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);
}

I have checked if $gegevens is actually an array and it is; when I print_r($gegevens) I get the following output (this is an associative array, right?):

Array ( [voornaam] => Marieke [achternaam] => Schut [emailadres] => [email protected] )

So the information is sent to my function wijzig_gegevens(). When I make wijzig_gegevens() return $gegevens and my primary code print_r(wijzig_gegevens()), it shows the exact same array as above. So $gegevens arrives in wijzig_gegevens() and is still an array.

So then the wijzig_gegevens() should do its part. Eventually it should update the database, but for now I/m just trying to get it to produce the key/value pairs from the array. Here's the function:

function wijzig_gegevens($gebruiker_id, $gegevens) {
    global $db;
    $gebruiker_id = (int)$gebruiker_id;
    foreach($gegevens as $key => $value) {
    return $key.$value;
    }
}

I expected the foreach to display 3 sets of key/value pairs. But for some reason it only displays the first key/value pair:

voornaamMarieke

This has been puzzling me for over a day now, so I'm hoping someone can help me find my mistake.

like image 961
J. Brink Avatar asked Apr 19 '16 11:04

J. Brink


1 Answers

You just return first value of loop in your code .You need an array to store whole key value of foreach loop as

$array=array();// define your array
foreach($gegevens as $key => $value) {
     $array[]=$key.$value;
}
return $array;// return array

And you get your return value as

$data=wijzig_gegevens($session_gebruiker_id, $gegevens);
print_r($data);
like image 116
Saty Avatar answered Oct 12 '22 10:10

Saty