使用array_search删除元素,给定次数

时间:2017-09-14 22:01:04

标签: php arrays

我正在尝试删除$inpSentences指定的给定时间内具有最小值的元素。

$a = array(0 => 2, 1 => 1.5);

$inpSentences是1

for($i = 0; $i != $inpSentences; i++){
  $min = min($a);
  $key1 = array_search($min, $a);
  unset($a[$key1]);
  echo($key1);
}

echo($a);

希望有人能够提供帮助 - 第一次发布到StackOverflow。也是php的新手。 谢谢!

2 个答案:

答案 0 :(得分:0)

最简单的方法可能是将数组从最低到最高排序,然后从一开始就切掉$inpSentences个元素。

使用array_slice(),从数组的开头删除特定数量的元素。这意味着如果您提供$inpSentences作为第二个参数(数组$a是第一个参数),那么将删除多少个元素。为确保始终删除最低值,请先sort()数组。

$inpSentences = 3;                      // How many elements you want to remove
sort($a);                               // Sort the array
$new = array_slice($a, $inpSentences);  // Slice off $inpSentences elements from the start
print_r($new);                          // Prints the resulting array

对于您的示例,$a = array(2, 1.5),它看起来像这样

// Input-array
Array (
    [0] => 2
    [1] => 1.5
)
// Output array
Array (
    [0] => 2
)

答案 1 :(得分:-1)

似乎有什么问题?您的代码工作正常,除了您在for循环中忘记了i的增量上的“$”符号。

您可能还想使用print_r($ a)或var_dump($ a)而不是echo来打印数组的值。