Проверить на пустоту все значения массива PHP

D
На сайте с 28.06.2008
Offline
1108
1003

Есть массив вида

array(10) { [2010]=> NULL [2011]=> NULL [2012]=> NULL [2013]=> NULL [2014]=> NULL [2015]=> NULL [2016]=> NULL [2017]=> NULL [2018]=> NULL [2019]=> NULL }

Как мне проверить на пустоту все значения этого массива и если все пусты то....

в общем эту проверку мне нужно засунуть в ELSEIF

Anamnado
На сайте с 08.02.2010
Offline
242
#1

проверкой если...( if == или != "" )

контролировать количество элементов массива вы должны сами . упускать терять нельзя ...

и зная это количество нет сложности составить цикл для проверки - он написан везде в любом учебнике.. (раздел -работа с массивом)

// или я не понял о чем речь

ну или если массив ассоциативный (по моему у вас он ) там много вариантов

<?php

$array = array("foo", "bar", "hallo", "world");

var_dump($array);

?>

Результат выполнения данного примера:

array(4) {

[0]=>

string(3) "foo"

[1]=>

string(3) "bar"

[2]=>

string(5) "hallo"

[3]=>

string(5) "world"

}

читаните Ассоциативные массивы php и найдете решение обязательно лучше подходяещее для вашей задачи !

D
На сайте с 28.06.2008
Offline
1108
#2

Т.е. - единственный вариант, проверять перебором в цикле, больше возможностей нет?

Gerga
На сайте с 02.08.2015
Offline
94
#3

Dram, есть :)


$array = [null, NULL];

if (!array_diff($array, array(null))) {
echo 'empty';
}

Во втором аргументе функции array_diff вы можете определить, в каких случаях считается элемент массива пустым значением. Например это может быть null, как показал выше, или '' или false или все сразу


array_diff($array, array(null, '', false)
D
На сайте с 28.06.2008
Offline
1108
#4

Леня в скайпе подсказал - $array= array_diff($array, array(''));

Anamnado
На сайте с 08.02.2010
Offline
242
#5
Dram:
Т.е. - единственный вариант, проверять перебором в цикле

и да и нет

вот вам показали спец функцию - она делает можно сказать тоже самое (пробег циклом по элементам и поиск пустоты - просто это не так явно выражено (завуалировано) и обычно работают быстрее ... ) Но и не всегда подходит для решения не всегда удобно.... (нужна цель нужно знать задачу целиком и исходя из этого выбирается способ)

IL
На сайте с 20.04.2007
Offline
435
#6
Dram:
Леня в скайпе подсказал - $array= array_diff($array, array(''));

В array_diff используется сравнение строк.. что по идее медленнее, чем

Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In other words: when the string representation is the same.

используемое в array_filter без указания callback сравнение с false


if(empty(array_filter($array))) ... ;

Да и код короче :)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#7
В array_diff используется сравнение строк.. что по идее медленнее, чем

На IBM286 лет 20 назад возможно было бы интересно про это послушать :)

используемое в array_filter без указания callback сравнение с false

Да, но diff универсальнее, сейчас нужно пустоту убрать, завтра пробелы, а потом и всякие значения.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Gerga
На сайте с 02.08.2015
Offline
94
#8
LEOnidUKG:
сейчас нужно пустоту убрать, завтра пробелы, а потом и всякие значения.

вот когда понадобится, тогда можно и расширять до array_diff :)

IL
На сайте с 20.04.2007
Offline
435
#9
LEOnidUKG:
Да, но diff универсальнее, сейчас нужно пустоту убрать, завтра пробелы, а потом и всякие значения.

По поводу универсальности - отнюдь же.. )) в diff - чистое сравнение, а в filter можно любую callback-функцию "для всяких значений" вторым параметром передать.

p.s. К примеру, diff не сможет строки с пробельными символами (пробел-таб-перевод строки..) по краям на пустоту проверить.. а в filter всё будет сделано легким движением trim-а.. )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий