2016-04-19 9 views
7

Я новичок в программировании и только что начал php, как два месяца назад. До сих пор я, казалось, все это понимал. Но теперь я в тупике. У меня есть цикл foreach, который не будет проходить через массив, в который я его кормлю. Я проверял синтаксис и логику снова и снова и не могу найти проблему. Я, наверное, делаю что-то глупое, но мне нужна твоя помощь, чтобы выяснить, что это такое.PHP foreach not looping

Этот код является частью скрипта, позволяющего зарегистрированному пользователю изменять свою личную информацию. Я положил данные $_POST в массиве и кормить его (с session_user_id) к моей функции 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); 
} 

Я проверил, если $gegevens на самом деле массив, и это; когда я print_r($gegevens) я получаю следующий результат (это ассоциативный массив, верно?):

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

Так что информация отправляется в моей функции wijzig_gegevens(). Когда я делаю wijzig_gegevens(), возвращаю $gegevens и мой основной код print_r(wijzig_gegevens()), он показывает тот же самый массив, что и выше. Итак, $gegevens прибывает в wijzig_gegevens() и по-прежнему является массивом.

Итак, wijzig_gegevens() должен внести свой вклад. В конце концов, он должен обновить базу данных, но на данный момент I/m просто пытается получить ее для создания пар ключ/значение из массива. Вот функция:

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

Я ожидал foreach для отображения 3 набора пар ключ/значение. Но по какой-то причине он отображает только первую пару ключ/значение:

voornaamMarieke 

Это было озадачивает меня в течение одного дня, так что я надеюсь кто-то может помочь мне найти мою ошибку.

+9

Вы» у вас есть «возврат» в цикле. Когда он попадает в 'return', вот и все. Вызов функции завершен. Вместо 'return' вы можете использовать' echo'. Но вы не должны «эхо» от функции (в зависимости). Таким образом, вы можете объединить переменную, а return - после * цикла foreach. –

+7

Вы действительно должны ввести код на английском языке lol: D – DanFromGermany

+1

Отличная работа по четкому определению проблемы и ваших замечаний. – mwittrock

ответ

10

Вы просто возвращаете первое значение цикла в коде .Вы нужен массив для хранения целого значения ключа петли Еогеаспа в

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

И вы получите ваше возвращаемое значение, как

$data=wijzig_gegevens($session_gebruiker_id, $gegevens); 
print_r($data);