2016-04-19 25 views
7

私はプログラミングでは新しく、2ヶ月前のようにPHPを始めたばかりです。これまで私はそれをますます理解していたようでした。しかし今、私は困惑しています。私は配列をループしないforeachループを持っています。私は何度も何度も構文とロジックをチェックして問題を見つけることができません。私はおそらく何か愚かなことをやっているが、私はあなたの助けが何であるかを知る必要がある。PHP foreachがループしない

このコードは、ログインしているユーザーが個人情報を変更できるようにするためのスクリプトの一部です。私は、配列内の$_POSTからのデータを入れて、私の機能wijzig_gegevens()に(session_user_idで)それを養う:$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); 
} 

。とき、私print_r($gegevens)は私が(?これは連想配列で、右)次のような出力が得られます。

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

ので、情報が私の機能wijzig_gegevens()に送信されます。 wijzig_gegevens()$gegevensとし、私のプライマリコードをprint_r(wijzig_gegevens())とすると、上記と全く同じ配列が表示されます。従って$gegevenswijzig_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 

+9

として、あなたの戻り値を取得するコード内でループの最初の値を返しますループの中で 'return 'を得ました。それが 'return'に当たると、それだけです。関数呼び出しが終了しました。 'return'の代わりに' echo'を使うことができます。しかし、あなたは関数から実際には返すべきではありません。だからあなたは変数に連結し、 'foreach'ループの後に*を返すことができます。 –

+7

あなたは本当に英語でコードする必要があります:笑:D – DanFromGermany

+1

問題とあなたの観察を非常にはっきりと述べるのにうってつけの仕事です。 – mwittrock

答えて

10

あなたは単に「。あなたが

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

としてforeachループの全体のキー値を格納する配列を必要とし、あなたが

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