【问题标题】:Remove an array element in indexed array using key使用键删除索引数组中的数组元素
【发布时间】:2017-10-27 21:50:13
【问题描述】:

如果我有一个值'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
);

【问题讨论】:

  • 根据您的程序需求,这有点棘手。 28可以多次出现吗?它是否需要取消设置您的搜索词的所有实例或只找到第一个?总而言之,无论哪种方式,您都需要在未排序的数组上使用循环,并根据可以实现的功能要求稍微提高效率。
  • @Patrick - 它只会在数组中出现一次。数字 28 代表您正在查看的当前页面术语/类别。谢谢

标签: php arrays unset


【解决方案1】:
if (false !== array_search('28', $terms)) {
      unset($terms[array_search('28', $terms)]);
}

【讨论】:

    【解决方案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
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 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)]);
          }
      

      【讨论】:

      • 如果您只想将 OP 指向一个函数,那么它是一个注释而不是一个答案。如果您想编写一些代码以及解释,则它成为 OP 和其他人现在可以理解和使用的答案,当其他人看到答案时
      • 点了。我添加了一个解决多个匹配问题的示例。
      猜你喜欢
      • 2012-02-12
      • 2016-05-20
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 2021-07-20
      • 1970-01-01
      相关资源
      最近更新 更多