【问题标题】:How to remove values from an array in PHP?如何从 PHP 中的数组中删除值?
【发布时间】:2010-11-20 06:19:23
【问题描述】:

是否有 PHP 函数可以从数组中删除某些数组元素?

例如,我有一个包含值的数组 (A) 和另一个需要从中删除值的数组 (B)。

要从数组B 中删除数组A 中的值吗?

【问题讨论】:

  • 我忍不住想知道同样的问题 +1

标签: php


【解决方案1】:

使用array_diff()

$new_array = array_diff($arrayB, $arrayA);

将返回一个数组,其中包含$arrayB$arrayA 中的所有元素。

要对关联数组执行此操作,请使用 array_diff_assoc()

要删除单个值,请使用:

unset($array[$key]);

你当然可以循环它来做数组函数的等价物,但这没有意义。

【讨论】:

    【解决方案2】:

    这取决于您所说的“删除”。

    您可以使用 unset() 函数从数组中删除键,但这不会重新索引它。例如,如果您有:

    $a = array(1 => 'one', 2 => 'two', 3 => 'three');
    

    然后你打电话

    unset($a[2]);
    

    你最终会得到类似的东西

    (1 => 'one', 3 => 'three');
    

    如果您需要对数组进行顺序索引,可以将未设置的数组输入 array_values(),这将返回一个具有顺序索引键的新数组。

    回到您原来的场景,正如其他人所观察到的,array_diff 将为您完成这项工作,但请注意,它不会进行索引检查。如果需要,请改用 array_diff_assoc。

    【讨论】:

      【解决方案3】:

      array_diff 函数将为您执行此操作。

      【讨论】:

        【解决方案4】:
        $array1 = array("a" => "green", "red", "blue", "red");
        $array2 = array("b" => "green", "yellow", "red");
        $result = array_diff($array1, $array2);
        
        print_r($result);
        

        【讨论】:

          【解决方案5】:

          我来到这篇文章的目的是寻找一种从数组中删除单个值的方法(标题所述)。这是一个直接的方法,假设要删除的值在数组中:

          $list = array('foo', 'bar', 'yay', '\o/');
          $toremove = 'foo';
          unset($list[array_search($toremove, $list)]);
          

          虽然如果要删除的元素不是数组的一部分,这会引发错误。

          另一种解决方案,但并未真正优化性能:

          $list = array('foo', 'bar', 'yay', '\o/');
          $toremove = 'foo';
          $list = array_flip($list);
          unset($list[$toremove]);
          $list = array_flip($list);
          

          无论如何,也许这里的每个人都建议使用 array_diff 创建一个具有单个值的数组更快更有效。

          【讨论】:

            【解决方案6】:

            也许这是一个简单快捷的解决方案。一个简单的重复,可以删除(取消设置)数组中的多个值。

                // Your array
                $list = array("apple", "orange", "strawberry", "lemon", "banana");
            
                // Initilize what to delete
                $delete_val = array("orange", "lemon", "banana");
            
                // Search for the array key and unset   
                foreach($delete_val as $key){
                    $keyToDelete = array_search($key, $list);
                    unset($list[$keyToDelete]);
                }
            

            【讨论】:

              猜你喜欢
              • 2021-10-14
              • 2010-09-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-05-23
              • 1970-01-01
              相关资源
              最近更新 更多