【发布时间】:2016-06-26 18:13:15
【问题描述】:
我正在从 While 循环填充一个数组,但无法生成正确的数组格式。我遇到了许多不同的变化,但不是我正在寻找的,包括在下面。目的是用于第 3 方 SMTP,如变量 $to 中所示
所需的数组:
array(3) {
["email1@email1.com"]=> array(1) { ["userid"]=> string(1) "6" }
["email2@email2.com"]=> array(1) { ["userid"]=> string(2) "64" }
["email3@email3.com"]=> array(1) { ["userid"]=> string(3) "503" }
}
尝试 1:
$str = array();
while($userEmails = $query->fetch(PDO::FETCH_ASSOC)){
$str[] = '"'.$userEmails['user_email'].'" => array(
"userid" => "'.$userEmails['user_id'].'"
)';
}
$to = $str;
尝试 1 不正确的数组:
array(3) {
[0]=> string(54) ""email1@email1.com" => array( "userid" => "6" )"
[1]=> string(54) ""email2@email2.com" => array( "userid" => "64" )"
[2]=> string(54) ""email3@email3.com" => array( "userid" => "503" )"
}
尝试 2:
$str = "";
while($userEmails = $query->fetch(PDO::FETCH_ASSOC)){
$str .= '"'.$userEmails['user_email'].'" => array( "userid" => "'.$userEmails['user_id'].'" )';
}
$emails = rtrim($str, ", ");
$to = array($emails);
尝试 2 不正确的数组:
array(1) {
[0]=> string(162) ""email1@email1.com" => array( "userid" => "6" )"email2@email2.com" => array( "userid" => "64" )"email3@email3.com" => array( "userid" => "503" )" }
【问题讨论】:
-
imo,如果您最初将其作为单独的步骤进行操作会更容易理解吗? 1)
$userEmail = $userEmails['user_email'];2)$userId = $userEmails['user_id'];。从这里有很多方法可以做到这一点...... 3)(一种方式:)$str[][$userEmail]['userid'] = $userid;。
标签: php arrays variables while-loop