Нужна помощь в создании функции на PHP

Рейтинг: 0Ответов: 1Опубликовано: 24.02.2023

Задачка из учебника Дмитрия Трепачёва:

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

Сначала попытался решить через array_splice, но почему-то ничего не работало, вероятно моя ошибка. Решил зайти с другой стороны и проверять значения элементов массива на совпадение с заданным значением и если не совпадает, то записывать в конец нового массива, а если совпадает, то пропускать. Как то так сейчас выглядит функция:

<?php
function delElem($a, $arr){
    $arr1 = [];
   foreach($arr as $elem){
       if($arr[$elem] != $a){
           array_push($arr1,$arr[$elem]);
           }else{
               continue; 
       }
   }
    return $arr1;
}

На массиве с 1 - 2 повторяющимися цифрами всё работает, но если я указываю например вот такой массив $arr = [1,1,1,1,1,1,2,3,4,5,6,7,8,9]; всё ломается и в консоль выводится только это:

<pre>Array
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 5
)
</pre>

Как сделать, чтобы работало?

ВАЖНОЕ УСЛОВИЕ Я УЖЕ ПОИСКАЛ РЕШЕНИЯ В ИНТЕРНЕТЕ, НО ВЕЗДЕ ПРЕДЛАГАЮТ РЕШИТЬ ЧЕРЕЗ filter ЭТО Я ЕЩЁ НЕ ПРОХОДИЛ И СУДЯ ПО ТОМУ, ЧТО ЗАДАЧА ДАНА В УЧЕБНИКЕ РАНЬШЕ, ЧЕМ ФИЛЬТР, ЕЁ МОЖНО И НУЖНО РЕШИТЬ КАКИМ-ТО ДРУГИМ СПОСОБОМ.

Ответы

▲ 0Принят

Мда, сам разобрался, глупая ошибка что вообще за $arr[$elem]? Пора спать, кажется. Вот так всё работает:

<?php
function delElem($a, $arr){
    $arr1 = [];
   foreach($arr as $elem){
       if($elem != $a){
           array_push($arr1,$elem);
           }else{
               continue; 
       }
   }
    return $arr1;
}
$arr = [1,1,1,1,1,1,2,3,4,5,6,7,8,9];
echo '<pre>';
print_r (delElem(1,$arr));
echo '</pre>';

ЕСЛИ КТО-ТО ПОДСКАЖЕТ, КАК РЕШИТЬ БЕЗ КОСТЫЛЯ В ВИДЕ ВТОРОГО МАССИВА - БУДУ ПРИЗНАТЕЛЕН!