How to remove integers in array less than X?

前端 未结 2 1067
暖寄归人
暖寄归人 2020-12-11 18:18

I have an array with integers of values from 0 to 100. I wish to remove integers that are less than number X and keep the ones that are equal or greater than number X.

相关标签:
2条回答
  • 2020-12-11 18:53

    Smarter than generating an array that is too big then cutting it down to size, I recommend only generating exactly what you want from the very start.

    range() will do this job for you without the bother of an anonymous function call iterating a condition.

    Code: (Demo)

    $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);
    

    Potential Output:

    98
    array (
      0 => 98,
      1 => 99,
      2 => 100,
    )
    

    Alternatively, if you truly, truly want to modify the input array that you have already generated, then assuming you have an indexed array you can use array_slice() to remove elements using X to target the starting offset and optionally preserve the indexes/keys.

    Code: (Demo)

    $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
    

    Potential Output:

    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,
    )
    
    0 讨论(0)
  • 2020-12-11 19:08

    A little ugly using the clunky create_function, but straight forward:

    $filtered = array_filter($array, create_function('$x', 'return $x >= $y;'));
    

    For PHP >= 5.3:

    $filtered = array_filter($array, function ($x) { return $x >= $y; });
    

    Set $y to whatever you want.

    0 讨论(0)
提交回复
热议问题