У меня есть массив с целыми числами от 0 до 100. Я хочу удалить целые числа, которые меньше числа X, и сохранить те, которые равны или больше числа X.
Немного уродливое использование неуклюжей create_function
, но прямо:
$filtered = array_filter($array, create_function('$x', 'return $x >= $y;'));
Для PHP> = 5.3:
$filtered = array_filter($array, function ($x) { return $x >= $y; });
Установите $y
в любое $y
для вас время.
Умнее создания массива, который слишком велик, а затем сокращая его до размера, я рекомендую только генерировать именно то, что вы хотите с самого начала.
range()
выполнит эту работу для вас без беспокойства анонимного вызова функции, повторяющего условие.
Код: ( Демо )
$rand=rand(0,100); // This is your X randomly generated echo $rand,"\n"; $array=range($rand,100); // generate an array with elements from X to 100 (inclusive) var_export($array);
Потенциальный выход:
98 array ( 0 => 98, 1 => 99, 2 => 100, )
В качестве альтернативы, если вы действительно хотите изменить уже созданный массив ввода, то, предположив, что у вас есть индексированный массив, вы можете использовать array_slice()
для удаления элементов с помощью X
чтобы настроить начальное смещение и, при необходимости, сохранить индексы / ключи.
Код: ( Демо )
$array=range(0,100); $rand=rand(0,100); // This is your X randomly generated echo $rand,"\n"; var_export(array_slice($array,$rand)); // reindex the output array echo "\n"; var_export(array_slice($array,$rand,NULL,true)); // preserve original indexes
Потенциальный выход:
95 array ( 0 => 95, 1 => 96, 2 => 97, 3 => 98, 4 => 99, 5 => 100, ) array ( 95 => 95, 96 => 96, 97 => 97, 98 => 98, 99 => 99, 100 => 100, )