PHP中关联数组和foreach的处理
我正在尝试为我的邮件系统编写一个通用函数 我计划做的是PHP中关联数组和foreach的处理,php,arrays,for-loop,multidimensional-array,foreach,Php,Arrays,For Loop,Multidimensional Array,Foreach,我正在尝试为我的邮件系统编写一个通用函数 我计划做的是 获取数组中的所有地址值和所需信息 将所有值存储在数据库中 我从二维关联数组开始,但无法检索foreach中的值 最后,foreach echo语句应该如下 insert into my_table('name','to_address','subject','message','add_cc') values ('Author1','author1@gmail.com','Subject','Message','test@gmail.com
insert into my_table('name','to_address','subject','message','add_cc') values ('Author1','author1@gmail.com','Subject','Message','test@gmail.com');
insert into my_table('name','to_address','subject','message','add_cc') values ('Author2','author2@gmail.com','Subject','Message','test@gmail.com');
insert into my_table('name','to_address','subject','message','add_cc') values ('Author3','author3@gmail.com','Subject','Message','test@gmail.com');
下面是我的代码,我知道问题在于foreach循环。即使关联数组在没有像[0]、[1]、[2]这样的数字序列的情况下最小化,我也会很高兴
<?php
$to_address = array(
array( 'Name' => "Author1", 'Email' => 'author1@gmail.com' ),
array( 'Name' => "Author2", 'Email' => 'author2@gmail.com' ),
array( 'Name' => "Author3", 'Email' => 'author3@gmail.com')
);
$subject = "Subject";
$message = "Message";
$add_cc = "test@gmail.com";
sendMail($to_address,$subject,$message,$add_cc);
function sendMail($to_address,$subject,$message,$add_cc) {
foreach ($to_address as $key => $val) {
foreach ($val as $key1 => $val1) {
print_r($val1);
}
}
}
?>
谢谢,
金兹
编辑:
换句话说,我无法循环$to_地址值,我需要帮助。这就是您想要的吗?您只需使用一个foreach并将每个数组放入
INSERT
$to_address = array(
array( 'Name' => "Author1", 'Email' => 'author1@gmail.com' ),
array( 'Name' => "Author2", 'Email' => 'author2@gmail.com' ),
array( 'Name' => "Author3", 'Email' => 'author3@gmail.com')
);
$subject = "Subject";
$message = "Message";
$add_cc = "test@gmail.com";
sendMail($to_address,$subject,$message,$add_cc);
function sendMail($to_address,$subject,$message,$add_cc) {
foreach ($to_address as $val) {
$sql = "INSERT INTO my_table('name','to_address','subject','message','add_cc')
VALUES ('".$val['Name']."','".$val['Email']."','".$subject."','".$message ."','".$add_cc."');";
echo $sql . "<br>";
//Use your Insert Statement
}
}
$to_address=数组(
数组('Name'=>'Author1','Email'=>'author1@gmail.com' ),
数组('Name'=>'Author2','Email'=>'author2@gmail.com' ),
数组('Name'=>“Author3”,'Email'=>'author3@gmail.com')
);
$subject=“subject”;
$message=“message”;
$add_cc=”test@gmail.com";
sendMail($to_address、$subject、$message、$add_cc);
函数sendMail($to\u address、$subject、$message、$add\u cc){
foreach($to_地址为$val){
$sql=“插入我的表格('name'、'to\u address'、'subject'、'message'、'add\u cc')
值(“$val['Name'.]”、“$val['Email'.]”、“$subject.”、“$message.”、“$add_cc.”)和“;”;
echo$sql。“
”;
//使用Insert语句
}
}
您可以在单个foreach中检索值:
function sendMail($to_address,$subject,$message,$add_cc){
foreach ($to_address as $val) {
$name = $val["Name"];
$email = $val["Email"];
echo "Name: $name, Email: $email <br\>\n";
}
}
函数sendMail($to\u address、$subject、$message、$add\u cc){
foreach($to_地址为$val){
$name=$val[“name”];
$email=$val[“email”];
echo“Name:$Name,Email:$Email\n”;
}
}
这就是你想要的吗
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
foreach ($to_address as $val) {
$sql = "insert into my_table('name','to_address','subject','message','add_cc') values (?,?,?,?,?)";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, $val['Name'], $val['Email'], $subject, $message, $add_cc);
);
mysqli_query($link, $sql);
}
先说
- 使用能告诉我变量内部内容的名称。像$val=>$key这样的东西什么都不告诉我。 也不使用foreach($valas$key1=>$val1)
- 缩进:使用它,看看psr-*
- 再次描述正在发生的事情。sendMail函数应发送电子邮件。不打印查询
$key=>$val
是什么意思
我还将foreach移出了该函数。这使它更便于移植和阅读。以下是您需要的代码- 这将创建所需的插入查询
<?php
$to_address = array( array( 'Name' => "Author1", 'Email' => 'author1@gmail.com' ),
array( 'Name' => "Author2", 'Email' => 'author2@gmail.com' ),
array( 'Name' => "Author3", 'Email' => 'author3@gmail.com')
);
$subject = "Subject";
$message = "Message";
$add_cc = "test@gmail.com";
sendMail($to_address,$subject,$message,$add_cc);
function sendMail($to_address,$subject,$message,$add_cc){
foreach ($to_address as $key => $val) {
$sqlStatement = "INSERT INTO my_table('name','to_address','subject','message','add_cc') VALUES ('".$val['Name']."','".$val['Email']."','".$subject."','".$message ."','".$add_cc."');";
echo "$sqlStatement <br/>";
}
}
?>
简单的数组访问有什么问题?你只需要名字和地址。你所知道的是,数组可能有大量的键值,我只是喜欢使用extract,因为代码变得更可读,变量也变得自解释。是的,它将变得单调乏味,使用数组与吨的关键
$mailReceivers = array(
array( 'Name' => "Author1", 'Email' => 'author1@gmail.com' ),
array( 'Name' => "Author2", 'Email' => 'author2@gmail.com' ),
array( 'Name' => "Author3", 'Email' => 'author3@gmail.com')
);
$subject = "Subject";
$message = "Message";
$add_cc = "test@gmail.com";
foreach ( $mailReceivers as $receiver )
{
parseMail($reciever['Name'], $reciever['Email'], $subject, $message, $add_cc);
}
function parseMail($name, $email, $subject, $message, $cc)
{
print 'INSERT INTO my_table ('name','to_address','subject','message','add_cc') VALUES ('. $name .', '. $email .', '. $subject .', '. $message .', '. $subject .')';
}
<?php
$to_address = array( array( 'Name' => "Author1", 'Email' => 'author1@gmail.com' ),
array( 'Name' => "Author2", 'Email' => 'author2@gmail.com' ),
array( 'Name' => "Author3", 'Email' => 'author3@gmail.com')
);
$subject = "Subject";
$message = "Message";
$add_cc = "test@gmail.com";
sendMail($to_address,$subject,$message,$add_cc);
function sendMail($to_address,$subject,$message,$add_cc){
foreach ($to_address as $key => $val) {
$sqlStatement = "INSERT INTO my_table('name','to_address','subject','message','add_cc') VALUES ('".$val['Name']."','".$val['Email']."','".$subject."','".$message ."','".$add_cc."');";
echo "$sqlStatement <br/>";
}
}
?>