В PHP удалить пустой ключ null массив значений, сохраняя при этом ключ-значение в противном случае не пустые/нулевые



У меня есть массив, который имеет около 12 потенциальных пар ключ / значение. Которые основаны на A _POST/_GET



Ключи не числовые, как в 0-n, и мне нужно сохранить ключи со значениями там, где это применимо. Моя проблема в том, что я знаю, что иногда ключ будет передан, где значение равно null, empty или равно ". В этом случае я хочу обрезать эти ключи перед обработкой моего массива. Как Бегущий вниз по линии без чего-то там собирается сломать мой скрипт.



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



function remove_array_empty_values($array, $remove_null_number = true)
{
$new_array = array();
$null_exceptions = array();
foreach($array as $key => $value)
{
$value = trim($value);
if($remove_null_number)
{
$null_exceptions[] = '0';
}
if(!in_array($value, $null_exceptions) && $value != "")
{
$new_array[] = $value;
}
}
return $new_array;
}


То, что я хотел бы сделать, очень похоже на это, однако это хорошо работает с массивами, которые могут иметь n-n ключевых значений, и я не зависим от ключа, а также значения, чтобы определить, что, где и когда. Поскольку выше будет просто удалить все в основном то просто перестроил массив. Где я застрял, пытаюсь понять. о том, как имитировать вышеупомянутую функцию, но где я сохраняю нужные мне ключи.

616   4  

4 ответов:

Если я правильно понимаю, что вам нужно, вы можете использовать array_filter() или сделать что-то вроде этого:

foreach($myarray as $key=>$value)
{
    if(is_null($value) || $value == '')
        unset($myarray[$key]);
}

Если вы хотите быстро удалить пустые, ложные и пустые строки ( "" ), но оставить значения 0 (ноль), вы можете использовать стандартную php-функцию strlen в качестве функции обратного вызова:

// removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values
$result = array_filter( $array, 'strlen' );

Источник: http://php.net/manual/en/function.array-filter.php#111091

array_filter это встроенная функция, которая делает именно то, что вам нужно. Самое большее, вам нужно будет предоставить свой собственный обратный вызов, который решает, какие значения остаются, а какие удаляются. Ключи будут сохранены автоматически, как указано в описании функции.

Например:

// This callback retains values equal to integer 0 or the string "0".
// If you also wanted to remove those, you would not even need a callback
// because that is the default behavior.
function filter_callback($val) {
    $val = trim($val);
    return $val != '';
}

$filtered = array_filter($original, 'filter_callback');

Используйте +1 с переменной key, чтобы пропустить нулевой ключ в массиве

foreach($myarray as $key=>$value)
{
    echo $key+1; //skip null key
}

Comments

    Ничего не найдено.