php - 在具有两个数组的 foreach 循环 php 中的条件存在问题
问题描述
我想在 foreach 循环中的数组中应用一些条件。实际上我有两个数组,稍后我将使用它们从脚本发送电子邮件。所以我的第一个数组包含 smtp 电子邮件 ID。第二个包含所有电子邮件 ID。如
$email_arrays=$this->camp->get_contact_details(9);
$smtp_array=$this->camp->get_sender_details(10);
/* pre($email_arrays);
pre($smtp_array); */
$lastElement = end($smtp_array);
reset($smtp_array);
foreach ($email_arrays as $em) {
$current = current($smtp_array);
$current_smtp_email=$current['email'];
$dl=$current['daily_limit'];//current daily limit e.g.5 or 10 etc
//sendmail_test();
echo "Send email ".$em['email']." with smtp: ".$current_smtp_email . " <br/>";
next($smtp_array);
if ($lastElement === $current) {
reset($smtp_array);
}
}
而且我的预期输出根据我的要求是完全正确的。但主要的问题是我对 smtp 电子邮件 ID 设置了限制,以发送我从另一个 smtp 表获得的电子邮件。
Send email test1@example.com with smtp: smtp1@gmail.com
Send email test2@example.com with smtp: smtp2@gmail.com
Send email test3@example.com with smtp: smtp3@gmail.com
Send email test4@example.com with smtp: smtp1@gmail.com
Send email test5@example.com with smtp: smtp2@gmail.com
Send email test6@example.com with smtp: smtp3@gmail.com
Send email test7@example.com with smtp: smtp1@gmail.com
Send email test8@example.com with smtp: smtp2@gmail.com
Send email test9@example.com with smtp: smtp3@gmail.com
Send email test10@example.com with smtp: smtp1@gmail.com
Send email test11@example.com with smtp: smtp2@gmail.com
Send email test12@example.com with smtp: smtp3@gmail.com
Send email test13@example.com with smtp: smtp1@gmail.com
Send email test14@example.com with smtp: smtp2@gmail.com
Send email test15@example.com with smtp: smtp3@gmail.com
我已经成功创建了我想要的帐户。但主要的是,如果我对 smtp1@gmail.com 应用了限制(假设我应用了限制 3),那么电子邮件应该由数组中的下一个 smtp 触发,并且应该也存储电子邮件计数..任何帮助将不胜感激。
我想要这个输出.. 如果我对 smtp1@gmail.com 应用 3 个限制,那么应该只触发 3 封电子邮件,然后迭代将继续使用数组中的另一个 smtp
解决方案
尝试一种不同的方法,首先使用 smpt 发送电子邮件,直到达到每日限制,然后转到下一个:
$lastElement = end($smtp_array);
reset($smtp_array);
$current = current($smtp_array);
$current_smtp_email=$current['email'];
$dl=$current['daily_limit'];//current daily limit e.g.5 or 10 etc
$send[$current_smtp_email] = 1;
foreach ($email_arrays as $em) {
if ($send[$current_smtp_email] > $dl) {
if ($lastElement === $current) {
die ('No more SMTP to use today');
}
next($smtp_array);
$current = current($smtp_array);
$current_smtp_email=$current['email'];
$dl=$current['daily_limit'];
$send[$current_smtp_email] = 1;
}
echo "Send email ".$em['email']." with smtp: ".$current_smtp_email . " <br/>";
$send[$current_smtp_email]++;
}
推荐阅读
- c - 来自键盘输入的动态数组填充[C]
- c# - 从共享方法调用构造函数(C# 到 VB.Net)
- react-native - React Native - 当redux状态改变时屏幕不会重新渲染
- java - Spring Cloud Gateway:如何配置到 Consul UI 的路由?
- android - 锁定屏幕上的 BiometricPrompt 对话框
- objective-c - 在 macOS 上从其代码对象获取进程所有者
- ios - 如何在 SwiftUI 中获取视图或屏幕的高度和宽度
- python - 错误:使用 Python 将 Json 插入 Postgresql 时
- python - 我可以像在 R 中一样在 python 中运行行吗?
- r - 如何在 R 中执行测试的现场显着性