我使用查询从数据库中获取值并使用foreach跟踪变量。我希望使用变量$cc_test
附加邮件ID。
最初变量为空。第一次迭代test@sample.com
第二次迭代test1@sample.com
和第三次test2@sample.com
。
最后我想获得test@sample.com,test1@sample.com,test2@sample.com
,但现在我得到'test2@sample.com,test2@sample.com
'。
$cc_check
是一个索引数组print_r($cc_test)
,用于for循环打印test@sample.com
代表第一名,test1@sample.com
代表第二名,依此类推。
$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); //test@sample.com,test1@sample.com,test2@sample.com
答案 0 :(得分: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;