Отменить элемент массива внутри цикла 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 или любым другим условием. В основном мне нужно иметь возможность получить ключ текущего элемента массива, который сам является массивом с одним элементом.

Ответы

Ответ 1

foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}

Ответ 2

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

foreach ($arr as $key => $value) {
    if (key($value) > 5) {
        unset($arr[$key]);
    }
}

Ответ 3

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

foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}

Ответ 4

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

Ответ 5

Чтобы удалить элемент массива, мы использовали функцию unset() и php, как показано ниже:

foreach($array as $key=>$value)
{
   if(key($value) > 5) 
   {
      unset($array[$key]);
   }
}