我使用以下内容在用户注册后将电子邮件地址退回到自动发送电子邮件。如果只有1个结果,那么在php中正确的LoadResultArray列表会崩溃吗?或者,如果只有1个结果,我是否必须写一个例外?
$query = "SELECT u.email FROM " . $table_prefix . "users as u, " . $table_prefix . "bl_teamcord as tc WHERE FIND_IN_SET('$team_id',tc.teams) AND tc.u_id = u.id AND tc.reg_emails = 1";
$db->setQuery($query);
$remail2 = $db->loadResultArray();
if ($remail2){
$remail3 = implode(",",$remail2);
}else{
$remail3 = "";}
另外,电子邮件功能可能有问题吗?
$to = $remail3;
答案 0 :(得分:13)
如果它只有1个元素,则分隔符将不存在,因此您应该没有问题。另外,如果没有元素,它也会返回一个空字符串,所以不需要测试。
$a = array();
$b = implode(',',$a); // ""
$a = array('foo');
$b = implode(',',$a); // "foo";
$a = array('foo','bar');
$b = implode(',',$a); // "foo,bar";
正如here所示。
答案 1 :(得分:0)
implode适用于任何大小的数组。
implode(',',array())===''
implode(',',array('something'))==='something'
答案 2 :(得分:0)
要回答您的第一个问题,implode将始终返回传入的数组的字符串。
当你传入不是数组的东西时,php会抛出一个警告,表明你刚刚传递的项目不是有效的数组......
所以要回答你的问题,这就是你要找的东西:
<?php
$query = "SELECT u.email FROM " . $table_prefix . "users as u, " . $table_prefix . "bl_teamcord as tc
WHERE FIND_IN_SET('$team_id',tc.teams)
AND tc.u_id = u.id
AND tc.reg_emails = 1";
$db->setQuery($query);
$remail2 = $db->loadResultArray();
$remail3 = (!empty($remail2) ? implode(",", $remail2) : "");
?>
PHP手册的网站上总是提供更多信息(它可能是网络上编程语言的最佳在线手册。
将来只需记住:如果您需要了解某个方法,它的功能或工作原理,可以按照以下网址格式查找文档: http://www.php.net/YOUR_METHOD_CALL_HERE
在您的情况下:http://www.php.net/implode
本手册的顶部几乎总是会让您知道如果以正确的和模糊方式调用方法,您刚才提供的案例会如何产生。
希望这会有所帮助。