HTML-форм массива, как хранить в массиве php, не включая нулевые элементы - PullRequest
1 голос
/ 16 июля 2009

Хранение массива, отправленного из форм, хранит элементы с нулевыми значениями. Есть ли способ хранить только ненулевые поля в массиве php?

$ _ SESSION ['items'] = $ _POST ['items'];

мой текущий код.

Ответы [ 3 ]

4 голосов
/ 16 июля 2009

Вы должны взглянуть на array_filter () . Я думаю, что это именно то, что вы ищете.

$_SESSION['items'] = array_filter($_POST['items']);
3 голосов
/ 16 июля 2009
# Cycle through each item in our array
foreach ($_POST['items'] as $key => $value) {
  # If the item is NOT empty
  if (!empty($value))
    # Add our item into our SESSION array
    $_SESSION['items'][$key] = $value;
}
0 голосов
/ 16 июля 2009

Как @ Пока Theis не скажет, array_filter - это определенно верный путь. Вы можете использовать его напрямую, например, так:

$_SESSION['items'] = array_filter($_POST['items']);

Что даст вам все элементы массива, который не оценивается как ложный. И.Е. вы отфильтруете как NULL, 0, false и т. д.

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

abstract class Util {
    public static function filterNull ($value) {
        return isset($value);
    }
}

$_SESSION['items'] = array_filter($_POST['items'], array('Util', 'filterNull'));

Это вызовет метод filterNull класса Util для каждого элемента в массиве items, и если они установлены (см. языковая конструкция isset () ), то они сохраняются в результирующем массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...