Сбросьте элемент массива в цикле foreach

Таким образом, вот мой код:

<?php

$arr = array(array(2 => 5),
             array(3 => 4),
             array(7 => 10));

foreach ($arr as $v) {
    $k = key($v);
    if ($k > 5) {
        // unset this element from $arr array
    }
}

print_r($arr);

// now I would like to get the array without array(7 => 10) member

Как Вы видите, я запускаю с массива единственного ключа => массивы значения, я циклично выполняюсь через этот массив и получаю ключ элемента тока (который является единственным массивом объекта).

Я должен сбросить элементы массива с ключом выше, чем 5, как я мог сделать это? Я, возможно, также должен был бы удалить элементы со значением меньше чем 50 или любое другое условие. В основном я должен смочь получить ключ объекта современного массива, который является самостоятельно массивом с единственным объектом.

19
задан Richard Knop 17 May 2010 в 20:05
поделиться

4 ответа

foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}
46
ответ дан 30 November 2019 в 02:10
поделиться

На самом деле небезопасно добавлять или удалять из коллекции во время итерации по ней. Как насчет того, чтобы добавить элементы, которые вы хотите, во второй массив, а затем сбросить исходный?

0
ответ дан 30 November 2019 в 02:10
поделиться

Используйте key () , чтобы получить первый ключ из подмассива.

foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}
2
ответ дан 30 November 2019 в 02:10
поделиться

Это безопасно в PHP для удаления элементов из массива во время итерации по нему с использованием цикла foreach:

foreach ($arr as $key => $value) {
    if (key($value) > 5) {
        unset($arr[$key]);
    }
}
15
ответ дан 30 November 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: