2012-06-04 2 views
1

Я создаю массив, чтобы определить, нужно ли мне принять действие. Я выполняю запрос. В таблице есть поле sent_date, чтобы определить, было ли отправлено электронное письмо пользователю или нет. После того, как он был отправлен пользователю, это поле sent_date заполнено getdate(). Вот как я строю:Определение, является ли массив значений NULL пустым

$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. В первый раз за месяц, когда этот скрипт запускается, значения ALL 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 и оценивать каждое значение?

ответ

1
if (!array_filter($sent_date)) 

array_filter удаляет все «пустые» элементы из массива. Если все элементы массива «пусты», результатом будет массив без элементов (array()). Пустой массив оценивается как false.

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); 
    
Смежные вопросы