我是编程的新手,就像两个月前刚开始使用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())时,它显示与上面完全相同的数组。因此,$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;
    }
}

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

这已经困扰了我整整一天,所以我希望有人可以帮助我找到我的错误。

最佳答案

您只需在代码中返回loop的第一个值即可。您需要一个数组来存储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);

关于PHP foreach不循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36716792/

10-14 19:52
查看更多