1

アクションを実行する必要があるかどうかを判断するための配列を作成しています。クエリを実行しています。このテーブルにはsent_date、電子メールがユーザーに送信されたかどうかを判別するためのフィールドがあります。ユーザーに送信されると、そのsent_dateフィールドには。が入力されgetdate()ます。これが私が構築している方法です:

$sent_date_sql = "
    select ind_id, sent_date from profileemail
";

$results = dbExec($sent_date_sql);

次に、アレイを構築します。

foreach ($results as $r){
    array_push($sent_date,$r['sent_date']);
    $query_count = count($results);
}

これはすべて見事に機能しています。私の問題は、sent_date配列をチェックするときです。このスクリプトが実行される月に初めて、すべてのsent_date値がNULLになります。したがって、私の配列は次のようになります。

array(228) {
  [0]=>
  NULL
  [1]=>
  NULL
  [2]=>
  NULL
  [3]=>
  NULL
  [4]=>
  NULL

...等。

今、私は評価しようとしてい$sent_dateます:

if(empty($sent_date)){

配列のempty値がすべてNULLであるため、条件がヒットすることはありません。私がやろうとしていることを達成するための別の方法はありますか?$sent_date配列をループして各値を評価する必要がありますか?

4

2 に答える 2

1
if (!array_filter($sent_date))

array_filter配列からすべての「空の」要素を削除します。配列内のすべての要素が「空」の場合、結果は要素のない配列になります ( array())。空の配列は に評価されfalseます。

于 2012-06-04T17:21:07.233 に答える
0

2つの方法でフォローアップできます。

  1. 最初の回答で述べたように、array_filterを使用できます。配列からすべての負のヌルの空の値を除外します。

  2. クエリを変更して、phpであまり作業する必要がないようにします。

    $sent_date_sql = "select ind_id, sent_date from profileemail where sent_date != NULL or sent_Date != '' ";
    
    $results = dbExec($sent_date_sql);
    
于 2012-06-04T17:30:34.420 に答える