2016-03-26 3 views
0

Мне нужно, чтобы все элементы в моем массиве были пустыми строками для обработки действия. Способ, которым я в настоящее время это делаю, - увеличивать переменную каждый раз, когда элемент является пустой строкой. Затем я проверяю значение этой переменной на некоторое требование N. Если N встречается, действие обрабатывается. Ниже приведен фрагмент кода, который проверяет пустые строки. Я не уверен, что это лучший способ сделать это и подумать, что должен быть лучший способ сделать это, потому что в основном я жестко кодирую эту ценность N. Кто-нибудь может предложить другой подход?PHP проверки элементов массива все пустые

function checkErrorArray($ers) { 
    $err_count = 0; 
    foreach ($ers as &$value) { 
     if ($value == '') { 
      $err_count++; 
     } 
    } 
    return $err_count; 
} 
+0

Как вы уже сказали, это работает, единственное, что вы могли бы написать это по-другому, как просто: 'return array_count_values ​​($ ers) [" "];' – Rizier123

ответ

3

Почему бы вам не сделать:

function areAllEmpty($ers) { 
    foreach ($ers as &$value) { 
     //if a value is not empty, we return false and no need to continue iterating thru the array 
     if (!empty($value)) return false; 
    } 
    //if got so far, then all must be empty 
    return true; 
} 

Это не будет проходить через весь массив, если непустое значение найдено.

Вы также могли бы сделать более короткий вариант:

function areAllEmpty($ers) { 
     $errs_str = implode('', $ers);//join all items into 1 string 
     return empty($errs_str); 
    } 

Надеется, что это помогает.

2

Просто фильтровать его, и если он пуст, то ! вернется true если не опорожнить вернет false:

return !array_filter($ers); 

Или, если вы на самом деле нужно счетчик пустых элементов затем:

return count(array_diff($ers, array_filter($ers)));