Убрать пустые значения в массиве php

Убрать пустые значения в массиве php

Подскажите, как удалить пустые значения из массива на PHP? Например у меня есть массив такого вида:

Пустые элементы нужно удалить.

Быстро это можно сделать так:

Ну или перебором массива.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Я использую php-функцию для создания списка пользователей с разбивкой на страницы. Мне нужно удалить записи без имени, поэтому я пробовал этот код, но он не работает: записи без имени не удаляются.

Противоположное работает хорошо, с этим кодом я получаю все записи без имени:

Имя хранится так же в БД:

Я использую PHP версии 5.3.16.

Что я делаю неправильно? Большое спасибо.

** EDIT ** Контекст: Joomla 2.5.9 и SobiPro 1.08. Я использую API SobiPro для создания списка:

Записи функций выглядят так:

Функция getEntries выглядит так:

2 ответа

0 jmgardn2 [2013-04-15 22:00:00]

Вместо того, чтобы искать непустые записи, возможно, вы могли бы сделать обратное и искать записи, которые имеют что-то вроде:

$listing->entries( $order, $eLimit, $eLimStart, true, array(‘owner’ => $userid, ‘name’ => ‘%’), false, $section);

Это, однако, чисто предположение, поскольку нам нужно будет увидеть функцию entries чтобы увидеть, как обрабатываются различные параметры.

SOLVED — Спасибо всем за вашу помощь!

$listing-> записи ($ order, $ eLimit, $ eLimStart, true, array (‘owner’ => $ userid, ‘! Name’ => null), false, -1);

Некоторые элементы в моем массиве – это пустые строки, основанные на том, что пользователь отправил. Мне нужно удалить эти элементы. У меня есть это:

Но это не работает, у $linksArray все еще есть пустые элементы. Я также пытался сделать это с помощью функции empty() но результат тот же.

Поскольку вы имеете дело с массивом строк, вы можете просто использовать array_filter() , который удобно обрабатывает все это для вас:

Читайте также:  Нет соединения с интернетом через роутер

Имейте в виду, что если обратный вызов не предоставляется , все записи массива, равные FALSE (см. Преобразование в логическое ), будут удалены. Поэтому, если вам нужно сохранить элементы, то есть точную строку ‘0’ , вам понадобится настраиваемый обратный вызов:

Вы можете использовать array_filter для удаления пустых элементов:

Если у вас есть (int) 0 в вашем массиве, вы можете использовать следующее:

EDIT: Возможно, ваши элементы не пустые как таковые, но содержат одно или несколько пробелов … Вы можете использовать следующее, прежде чем использовать array_filter

«Если обратный вызов не будет передан, все записи ввода, равные FALSE, будут удалены». – http://php.net/manual/en/function.array-filter.php

Самый популярный ответ на эту тему абсолютно НЕПРАВИЛЬНЫЙ.

Рассмотрим следующий скрипт PHP:

Почему это? Поскольку строка, содержащая один символ «0», также вычисляет значение boolean false, поэтому, хотя это не пустая строка, она все равно будет фильтроваться. Это было бы ошибкой.

Передача встроенной функции strlen, поскольку функция фильтрации будет работать, потому что она возвращает ненулевое целое для непустой строки и нулевое целое для пустой строки. Целочисленные числа без нуля всегда оцениваются как истинные при преобразовании в логические, тогда как нулевые целые числа всегда вычисляются как false при преобразовании в boolean.

Итак, абсолютный, окончательный, правильный ответ:

Вы можете просто сделать

array_filter: «Если обратный вызов не предоставляется, все записи ввода, равные FALSE, будут удалены». Это означает, что элементы со значениями NULL, 0, ‘0’, », FALSE, array () также будут удалены.

который удалит элементы со значениями NULL, » и FALSE.

Надеюсь это поможет 🙂

ОБНОВИТЬ

  • 0 или ‘0’ удаляет 0 и ‘0’
  • NULL, FALSE или » удалит NULL, FALSE и »
Читайте также:  122 Минуты в часах

Еще один лайнер для удаления пустых («пустых строк») элементов из вашего массива.

Примечание. Этот код намеренно содержит нулевые, 0 и ложные элементы.

Или, возможно, вы хотите сначала обрезать элементы массива:

Примечание. Этот код также удаляет нулевые и ложные элементы.

Самый проголосовавший ответ ошибочен или, по крайней мере, не совсем прав, поскольку OP говорит только о пустых строках. Вот подробное объяснение:

Прежде всего, мы должны договориться о том, какие пустые средства. Вы хотите отфильтровать:

  1. только пустые строки ("")?
  2. строго ложные значения? ( $element === false )
  3. значения ложности ? (то есть 0, 0,0, "", "0", NULL, array () …)
  4. эквивалент функции empty() PHP?

Чтобы отфильтровать только пустые строки :

Чтобы только отфильтровать строго ложные значения, вы должны использовать функцию обратного вызова :

Обратный вызов также полезен для любой комбинации, в которой вы хотите отфильтровать значения «falsey», кроме некоторых. (Например, фильтруйте все null и false и т. Д., Оставляя только 0 ):

Третий и четвертый случаи (для наших целей наконец) эквивалентны, и для этого все, что вам нужно использовать, – это значение по умолчанию:

Я использую следующий скрипт для удаления пустых элементов из массива

Если вы работаете с числовым массивом и вам нужно повторно проиндексировать массив после удаления пустых элементов, используйте функцию array_values :

См. Также: PHP reindex array?

Я должен был сделать это, чтобы сохранить значение массива (string) 0

Для многомерного массива

Просто хочу внести альтернативу циклам … также устраняя пробелы в ключах …

В моем случае я хотел сохранить последовательные ключи массива, когда операция была завершена (а не просто нечетные числа, на что я смотрел. Настройка кода для просмотра только для нечетных ключей показалась мне хрупкой, а не будущей).

Читайте также:  Скорость начинается с тебя мегафон описание тарифа

Комбинация array_filter и array_slice делает трюк.

$example = array_filter($example); $example = array_slice($example,0);

Не знаю об эффективности или контрольных показателях, но это работает.

используйте функцию array_filter для удаления пустых значений:

Только одна строка: Обновление (спасибо @suther):

вывод

Удалить пустые элементы массива

попробуйте это ** ** Пример

Вкратце:

Это мой предложенный код:

Объяснение:

Я думаю, что использовать array_filter хорошо, но не достаточно, потому что значения как space и
, … сохраняются в массиве, и это обычно плохо.

Поэтому я предлагаю вам использовать смесь array_filter и array_map .

array_map для обрезки, array_filter – для удаления пустых значений, strlen – для значения keep 0 , а array_values – для индексации, если вам нужно.

Ссылка на основную публикацию
Тест эксель на собеседовании
Если вы хоть раз пытались устроиться на работу или же работаете на должности, в круг обязанностей которой входит принятие людей...
Тарифы мтс смарт 400 руб
С того момента как тариф «Смарт» стал доступен для активации, он претерпел множество изменений. Они касаются размера абонентской платы, количества...
Тарифы ростелекома на домашний интернет
Полный список актуальных тарифов Ростелеком для города Москва. Подключай тарифы Rostelecom в Москве бесплатно и пользуйся качественными услугами интернета и...
Тестирование cd и dvd дисков
В этой статье я опишу программу тест Nero CD DVD Speed, которая разработана компанией "Nero Softwsre AG". С помощью программы...
Adblock detector