Как подсчитать непустые записи в массиве PHP?
Рассмотрим:
[name] => Array ( [1] => name#1
[2] => name#2
[3] => name#3
[4] => name#4
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)
$name = $_POST['name']
Я хочу, чтобы результат был 4
.
count ($name) = 9
count (isset($name)) = 1
count (!empty($name)) = 1
Я думаю, что последний выполнит то, что мне нужно, но это не так (пустые записи из незаполненных входов в форме).
Ответы
Ответ 1
Вы можете использовать array_filter только для сохранения значений, которые не являются пустым в массиве, например:
array_filter($array);
Или, если ваша функция фильтра более сложна:
array_filter($array, function($x) { return !empty($x); });
# function(){} only works in in php >5.3, otherwise use create_function
Итак, считать только непустым:
count(array_filter($array));
Ответ 2
count(array_filter($name));
Ответ 3
Здесь простая функция вычисления:
function non_empty(array $a) {
return array_sum(array_map(function($b) {return empty($b) ? 0 : 1;}, $a));
}
Это сохранит индексы массива, если вам нужна функция обработки формы, например, когда вы связываете третий вход по имени с третьим значением другого набора входных данных, и между ними есть пустые входы.