使用键

时间:2017-05-26 22:49:33

标签: php arrays unset

如果我有值'28'并且我想在数组中搜索包含该值的索引并将其删除。有没有办法不通过数组中的每个元素运行for循环?

在这种情况下,我想删除元素$terms[7] or 6 => 28

$needle = 28;
$terms = array(
  0 =>  42
  1 =>  26
  2 =>  27
  3 =>  43
  4 =>  21
  5 =>  45
  6 =>  28
  7 =>  29
  8 =>  30
  9 =>  31
  10 =>  46
);

3 个答案:

答案 0 :(得分:4)

if (false !== array_search('28', $terms)) {
      unset($terms[array_search('28', $terms)]);
}

答案 1 :(得分:2)

如上所述,使用array_search()查找该项目。然后,使用unset()将其从数组中删除。

$haystack = [42, 28, 27, 45];
$needle = 28;

$index = array_search($needle, $haystack);

if ($index !== false) {
    unset($haystack[$index]);
} else {
    // $needle not present in the $haystack
}

答案 2 :(得分:1)

您可以使用array_keys查找指针的所有索引。

array_keys

<?php
    $needle = 28;
    $haystack = [42, 26, 27, 43, 21, 45, 28, 29, 30, 31, 28, 46];
    $results = array_keys($haystack, $needle, true);
    while (!empty($results)) {
      unset($haystack[array_shift($results)]);
    }