0

我正在使用以下内容在用户注册后将电子邮件地址检索为自动电子邮件。如果只有 1 个结果,php implode 中的 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;
4

3 回答 3

16

如果它只有 1 个元素,则分隔符将不存在,因此您应该没有问题。另外,如果没有元素,它也会返回一个空字符串,所以不需要测试。

$a = array();
$b = implode(',',$a); // ""

$a = array('foo');
$b = implode(',',$a); // "foo";

$a = array('foo','bar');
$b = implode(',',$a); // "foo,bar";

如此处所示。

于 2012-03-02T02:11:01.047 回答
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 手册的网站上始终提供更多信息(它可能是网络上最好的编程语言在线手册。

以后只要记住:如果您需要了解某个方法、它的作用或它是如何工作的,您可以按照以下 url 格式找到文档: http ://www.php.net/YOUR_METHOD_CALL_HERE

在你的情况下:http ://www.php.net/implode

手册的顶部几乎总是会告诉您,如果以正确晦涩的方式调用该方法,那么您刚刚给出的案例将如何导致结果。

希望这可以帮助。

于 2012-03-02T02:49:31.470 回答
0

内爆适用于任何大小的数组。

内爆(',',数组())===''

内爆(',',数组('某事'))==='某事'

于 2012-03-02T02:10:24.893 回答