rishatss
@rishatss
Simple Developer ^)

Как удалить ключ из массива?

Добрый день господа.
Сижу тут над задачкой, вообщем пытаюсь реализовать функцию которая принимает массив и проверяет на null значений в нем.

function compact(array $array)
{
    $newarray = $array;
    foreach($newarray as $key => $value)
    {
        if($value == null)
        {
            unset($newarray[$key]);

        }
    }
    return $newarray;
    
}


Вообщем на выводе:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] =>
    [4] =>
)


А я пытаюсь при этом удалить и ключ, но что-то у меня не выходит.


Также параллельный вопрос.
При работе с входными аргументами в моем случае массивом, я прочитал что напрямую с входными параметрами работать нельзя(мутировать массив переданный входным аргументом)

Правда ли это и почему?

И правильно ли я сейчас работаю с входным массивом?
Я его перезаписал в отдельную переменную.

Спасибо :)
  • Вопрос задан
  • 1959 просмотров
Решения вопроса 2
function compac(array $data)
{
    return array_filter($data, function($el) {
        return !empty($el);
    });
}

print_r(compac([0,1,2,3,null,5]));


И функция compact уже определена в php. используйте другое название

Ну вообще можно сделать так

function compac(&$data)
{
    $data = array_filter($data, function($el) use ($data)  {
        return !empty($el);
    });
}

$array = [0,1,2,3,null,5];

compac($array);

print_r( $array );
Ответ написан
daager
@daager
1) Ваш код работает
2) compact - стандартная функция PHP, смените название функции
3) Вариант проще и короче:
$arr=array_diff($arr,array(null));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы