Я новичок в программировании и только что начал 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
Это было озадачивает меня в течение одного дня, так что я надеюсь кто-то может помочь мне найти мою ошибку.
Вы» у вас есть «возврат» в цикле. Когда он попадает в 'return', вот и все. Вызов функции завершен. Вместо 'return' вы можете использовать' echo'. Но вы не должны «эхо» от функции (в зависимости). Таким образом, вы можете объединить переменную, а return - после * цикла foreach. –
Вы действительно должны ввести код на английском языке lol: D – DanFromGermany
Отличная работа по четкому определению проблемы и ваших замечаний. – mwittrock