Arrays 在PHP Foreach循环外部使用变量
我试图在foreach循环之外输出用户名和用户电子邮件。我正在尝试向属于某个用户角色的所有WordPress用户发送电子邮件 这是我的密码:Arrays 在PHP Foreach循环外部使用变量,arrays,wordpress,email,Arrays,Wordpress,Email,我试图在foreach循环之外输出用户名和用户电子邮件。我正在尝试向属于某个用户角色的所有WordPress用户发送电子邮件 这是我的密码: // Get users and their roles $user_args = array( 'role__in' => 'new_role', 'orderby' => 'user_nicename', 'order' => 'ASC' ); $users =
// Get users and their roles
$user_args = array(
'role__in' => 'new_role',
'orderby' => 'user_nicename',
'order' => 'ASC'
);
$users = get_users($user_args);
foreach ( $users as $user ) :
$user_name = $user->user_email;
$user_email = $user->display_name;
endforeach;
因此,我可以在页面的其他区域使用它们,即:
echo 'Hello, ' . $user_name;
echo 'Send to: ' .$user_email;
我已打印出$users数组,其中包含以下内容:
Array
(
[0] => WP_User Object
(
[data] => stdClass Object
(
[ID] => 46
[user_login] => huw
[user_pass] => u7CqxbuQDvApUAF6tT.
[user_nicename] => huw
[user_email] => huw@xxxx.co.uk
[user_url] =>
[user_registered] => 2017-02-06 11:13:09
[user_activation_key] => 1486379590:$P$BkisA4T5j1S/ZjRageafNYHfsdin1S0
[user_status] => 0
[display_name] => Huw Daniel Rowlands
)
[ID] => 46
[caps] => Array
(
[sssg] => 1
[new_role] => 1
[site_member] => 1
[test_role] => 1
)
[cap_key] => jciw_capabilities
[roles] => Array
(
[0] => sssg
[1] => new_role
[2] => site_member
[3] => test_role
)
[allcaps] => Array
(
[read] => 1
[sssg] => 1
[new_role] => 1
[site_member] => 1
[test_role] => 1
)
[filter] =>
)
[1] => WP_User Object
(
[data] => stdClass Object
(
[ID] => 308
[user_login] => jeremy
[user_pass] => LLOKbkPOWQsBKUIk2qL1
[user_nicename] => magnus
[user_email] => jeremy@gmail.com
[user_url] =>
[user_registered] => 2017-05-03 19:24:42
[user_activation_key] => 1493839482:$P$BI/IYldCzsXZowLEiNfxiUkIwVdDKV0
[user_status] => 0
[display_name] => Jeremy
)
[ID] => 308
[caps] => Array
(
[new_role] => 1
[sssg] => 1
[site_member] => 1
)
[cap_key] => jciw_capabilities
[roles] => Array
(
[0] => new_role
[1] => sssg
[2] => site_member
)
[allcaps] => Array
(
[read] => 1
[new_role] => 1
[sssg] => 1
[site_member] => 1
)
[filter] =>
)
)
如果要向具有特定角色的所有用户发送电子邮件,请尝试以下操作:
// Get users and their roles
$user_args = array(
'role__in' => 'new_role',
'orderby' => 'user_nicename',
'order' => 'ASC'
);
$users = get_users($user_args);
foreach ( $users as $user ) :
$user_email = $user->user_email;
$user_name = $user->display_name;
send_email($user_name, $user_email);
endforeach;
然后编写您的电子邮件功能:
function send_email($name, $email) {
// Do email sending stuff here with $name & $email
}
我不明白你想做什么。如果要在foreach循环中保存“user\u name”和“user\u email”,只需每次覆盖变量,直到最后一次迭代。看起来你只需要一个用户,对吗?谢谢@Chris的帮助。我现在修改了我的代码,包括:
foreach($users as$user):$user\u name=$user->user\u email;$user\u email=$user->display\u name;发送电子邮件($user\u name,$user\u email);endforeach
然后创建了一个包含所需电子邮件内容的函数:函数send_email($user_name,$user_email){//Body content在这里……wp_email($admin_email,$subject,$Body,$headers);}
但我没有收到任何电子邮件。@HuwRowlands,$admin_email
来自哪里?应该改为$user\u email
?(另外,我假设$subject
、$body
和$headers
在使用前已定义,对吗?对不起。我已更新了我的函数调用,以包含一些其他变量:函数发送电子邮件($user\u name、$user\u email、$admin\u email、$post\u id、$cat\u list){
这些是预定义的。$admin\u email
用于向网站管理员发送电子邮件。$headers=array('From:admin\r\n','to:admin\r\n','Bcc:'.$user\u name.\r\n');
@HuwRowlands我不太熟悉wp\u mail()
函数,但我建议将所有这些变量打印到每个循环的屏幕上,以便您可以验证变量是否正确设置简化我的代码,$user\u name和$user\u电子邮件变量输出不正确。$user\u name输出电子邮件地址,$user\u电子邮件输出名称?!这种情况仅在外部发生调用函数时的foreach循环。