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

...ETC。

现在我将尝试评估$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

您可以通过两种方式跟进。

  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 回答