gpt4 book ai didi

foreach 循环内的 PHP foreach 循环

转载 作者:可可西里 更新时间:2023-10-31 23:23:15 25 4
gpt4 key购买 nike

我正在尝试在 foreach 循环内执行 foreach 循环。

我有一个表单,用户可以在其中输入一些文本并点击发送。在服务器站点上,我循环遍历一个包含电子邮件地址的数组并发送文本消息。

现在我还希望用户能够在文本区域中使用变量,例如 $name。所以我的循环应该首先遍历电子邮件,然后用数组中的名称 str_replace userinput $name 变量。

该循环对电子邮件部分($tlf)工作正常,但对替换 $name 部分无效。

有人能发现我做错了什么吗?

$message = stripslashes(strip_tags($_POST['message2']));
$tlf=array("name1","name2");
$test=array("mname1", "mname2");
$subject = "Hello world";
$from = "me@gmail.com";
$headers = "From: $from";

foreach($tlf as $name){
$to = $name. "@gmail.com";
foreach($test as $navn){
$message = str_replace('$navn', $navn, $message);}
mail($to,$subject,$message,$headers);
}

非常感谢。

编辑:输出是发送的电子邮件。假设用户输入“hello $name”。我希望它首先遍历 $tlf 数组,在本例中创建 2 封电子邮件。这在第一个循环中以 $to 的形式出现。这行得通。

现在下一个循环应该识别用户输入“hello $name”并循环遍历 $test 数组替换用户 $name 变量。

输出将是发送 2 封电子邮件。

  1. 邮件输出:至:name1@gmail.com消息:你好 mname1

  2. 邮件输出:至:name1@gmail.com消息:你好 mname2

如果我需要更好地解释,请告诉我,对不起,我很难解释。

最佳答案

当您执行以下操作时:

str_replace('$navn', $navn, $message)

然后所有 $navn 的文字出现将被替换(第一个、第二个、第三个...)。因此,第二次运行该循环不可能再替换任何东西。

你需要定义两个占位符,或者做一些区分,或者使用preg_replace_callback如果您想声明应用可能的替换字符串的顺序(或其他逻辑)。

如果您告诉我们(但您没有告诉我们)您只想替换每次迭代中的第一次出现,那么一个普通的 preg_replace(.., .., .., 1)会工作。

关于foreach 循环内的 PHP foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com