11
Сен
2021

Аналогичная функция array_pop [дубликат]

Есть вопрос по области видимости. Пробую написать аналогичную функцию array_pop, но есть проблема с областью видимости функции.

Каким образом вообще работает array_pop в php? В том смысле, как получается, что имея только один параметр, он возвращает и значение, которое было вырезано, и обрезанный массив? Я пытался написать код, подобный js, где с помощью цикла меняется длина массива, но здесь вне области видимости функции, как в js, фокус с изменением длины массива не работает - моя функция возвращает лишь "удалённое" значение с конца массива, а длина исходного массива после применения функции не меняется. Пробовал цикл, пробовал присваивать длину массива переменной (поскольку на count($arr) выдаёт ошибку "Expression is not writable"), но, к сожалению, выходит так, что если функция это не возвратит, то ничего и не произойдёт с этим массивом, поэтому удалось только выделить "удаляемое" значение. Вот мне и интересно, каким образом это получается у array_pop.

$array = [1, 2, 3, 4, 5];

function array_pop_custom($arr)
    {
        $elem = $arr[count($arr) - 1];
        //здесь должен быть код, который сокращает длину массива
        return $elem;
    }
    
print_r(array_pop_custom($array)); // возвращает 5
print_r($array); // но при этом длина массива не поменялась, в отличие от применения встроенного метода

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

Источник: https://ru.stackoverflow.com/questions/1327606/%D0%90%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%BD%D0%B0%D1%8F-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-array-pop

Тебе может это понравится...

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