Intereting Posts

Как удалить целые числа в массиве меньше X?

У меня есть массив с целыми числами от 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, )