0

ユーザー登録後に自動メールアドレスを廃止するために、以下を使用しています。結果が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;
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は、任意のサイズの配列で機能します。

implode('、'、array())===''

implode('、'、array('something'))==='something'

于 2012-03-02T02:10:24.893 に答える
0

最初の質問に答えるために、implode は常に、渡された配列の文字列を返します。

ただし、配列ではないものを渡すと、php は、渡したばかりの項目が有効な配列ではないことを示す WARNING をスローします...

あなたの質問に答えるために、これはあなたが探しているものです:

<?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 マニュアルの Web サイトでいつでも入手できます (おそらく、プログラミング言語のネット上で最高のオンライン マニュアルです。

将来的には覚えておいてください: メソッド、その機能、またはどのように機能するかについて何かを知る必要がある場合は、次の URL 形式に従ってドキュメントを見つけることができます: http://www.php.net/YOUR_METHOD_CALL_HERE

あなたの場合: http://www.php.net/implode

マニュアルの最初のセクションでは、ほとんどの場合、メソッドが適切かつあいまいな方法で呼び出された場合に、今挙げたようなケースがどのような結果になるかを示しています。

お役に立てれば。

于 2012-03-02T02:49:31.470 に答える