PHP foreach not looping



我是编程新手,两个月前刚刚开始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);
}

我已经检查了$gegevens是否真的是一个数组,它是;当我print_r($gegevens)时,我得到以下输出(这是一个关联数组,对吗?):

Array ( [voornaam] => Marieke [achternaam] => Schut [emailadres] => mariekeschut@gmail.com )

因此,信息被发送到我的函数wijzig_gegevens()。当我让wijzig_gegevens()返回$gegevens和我的主代码print_r(wijzig_gegevens())时,它显示了与上面完全相同的数组。所以CCD_ 10到达CCD_。

因此,wijzig_gegevens()应该尽自己的职责。最终它应该会更新数据库,但目前我/我只是想让它从数组中生成键/值对。功能如下:

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

我期望foreach显示3组键/值对。但由于某些原因,它只显示第一个键/值对:

voornaamMarieke

这件事已经困扰了我一天多了,所以我希望有人能帮我找出错误。

您只需返回代码中循环的第一个值。您需要一个数组来将foreach循环的整个键值存储为

$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);

简单明了,return只返回一个值,因此要在不编写太多代码的情况下获取所有值,请使用echo而不是返回

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

最新更新