我是编程的新手,刚刚开始使用两个月前的php.到目前为止,我似乎越来越了解它.但现在我很难过.我有一个foreach循环,它不会循环通过我喂它的数组.我一遍又一遍地检查语法和逻辑,找不到问题.我可能做了一些愚蠢的事情,但我需要你帮忙找出它是什么.
此代码是允许登录用户更改其个人信息的脚本的一部分.我将数据$_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);
}
Run Code Online (Sandbox Code Playgroud)
我已经检查过它$gegevens是否真的是一个阵列而且它是; 当我print_r($gegevens)得到以下输出(这是一个关联数组,对吧?):
Array ( [voornaam] => Marieke [achternaam] => Schut [emailadres] => mariekeschut@gmail.com )
Run Code Online (Sandbox Code Playgroud)
所以信息被发送到我的功能wijzig_gegevens().当我wijzig_gegevens()返回$gegevens和我的主代码时print_r(wijzig_gegevens()),它显示与上面完全相同的数组.所以$gegevens到达wijzig_gegevens()并仍然是一个阵列.
那么wijzig_gegevens()应该尽自己的一份力.最终它应该更新数据库,但是现在我只是试图让它从数组中生成键/值对.这是功能:
function wijzig_gegevens($gebruiker_id, $gegevens) {
global $db;
$gebruiker_id = (int)$gebruiker_id;
foreach($gegevens as $key => $value) {
return $key.$value;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望foreach显示3组键/值对.但由于某种原因,它只显示第一个键/值对:
voornaamMarieke
Run Code Online (Sandbox Code Playgroud)
这让我困惑了一天多,所以我希望有人可以帮我找到我的错误.
Sat*_*aty 10
您只需在代码中返回循环的第一个值.您需要一个数组来存储foreach循环的整个键值
$array=array();// define your array
foreach($gegevens as $key => $value) {
$array[]=$key.$value;
}
return $array;// return array
Run Code Online (Sandbox Code Playgroud)
而且你得到的回报值是
$data=wijzig_gegevens($session_gebruiker_id, $gegevens);
print_r($data);
Run Code Online (Sandbox Code Playgroud)