2017-11-13 4 views
0

私はクエリを使用してデータベースから値を取り出し、foreachを使用して変数をトレースしています。私はメールIDに変数$cc_testを付け加えたいと思っています。グローバル変数を連結する文字列

最初は変数が空です。第1回目は[email protected]第2回目は[email protected]、第3回目は[email protected]です。

最後に[email protected],[email protected],[email protected]を取得しますが、今は「[email protected],[email protected]」と表示されます。

$cc_checkは、forループ印刷のインデックス付き配列[email protected]で、第2の場合は[email protected]などとなります。

$cc_check=asset_status_tracker::where('request_id','=',$data['id'])->where('status_before','!=',null)->get(); 
$cc_test=''; //dump requestor mail id 
foreach($cc_check as $cc_inner){ 
    $cc_mail=$cc_inner->changed_by; 
    print_r($cc_mail); 
    $cc_test=users::where('id','=',$cc_mail)->first()->mail; 
    $cc_test=$cc_test.','.$cc_test; 
    //print_r($cc_test); 
} 
print_r($cc_test); //[email protected],[email protected],[email protected] 
+0

屋、それはあなたが、 '$ cc_test =ユーザー::( 'ID'、 '='、$ cc_mail)を行う各ループ内の配列 – user3386779

+0

だ - >最初の() - >メール; 'だから、すべてのループで$ cc_testにあったものが失われます。 [email protected]のメールのみが表示されます。その行を '$ cc_test2 = ....'に変更し、下の連結(次のlline)で '$ cc_test = $ cc_test。 '、'。$ cc_test2;'を実行してください。 – Nic3500

答えて

1

あなたが理解している場合は、カウンタは必要ありません。すべての値をグルーとしてカンマで連結する必要があります。

ループが終了した後にimplode()を実行することで、余分なコンマや反復条件を使わずにこれを行うことができます。

電子メールを配列に保存し、コンマで区切られた値の文字列を生成するように配列を暗黙指定します。

コード:

$emails=[]; 
foreach($cc_check as $cc_inner){ 
    $emails[]=users::where('id','=',$cc_inner->changed_by)->first()->mail; 
} 
$email_string=implode(',',$emails); 
echo $email_string; 
関連する問題