【问题标题】:remove element from array based on its value?根据其值从数组中删除元素?
【发布时间】:2010-01-30 22:17:35
【问题描述】:

我有一个包含键和值的常规数组。

有没有一种简单的方法可以根据数组元素的值来删除它,还是我必须对其进行 foreach 循环并检查每个值以将其删除?

【问题讨论】:

    标签: php


    【解决方案1】:

    array_diff:

    $array = array('a','b','c');
    $array_to_remove = array('a');
    
    $final_array = array_diff($array,$array_to_remove);
    // array('b','c');
    

    编辑:更多信息:http://www.php.net/array_diff

    【讨论】:

    • 太棒了!谢谢。
    【解决方案2】:

    http://us3.php.net/array_filter

    PHP 5.3 示例从数组 $a 中删除“foo”:

    <?php
    $a = array("foo", "bar");
    $a = array_filter($a, function($v) { return $v != "foo"; });
    ?>
    

    第二个参数可以是任何类型的 PHP 回调(例如,作为字符串的函数名称)。如果搜索值不是常数,您也可以使用函数生成函数。

    【讨论】:

    • 很好,不熟悉array_fliter
    【解决方案3】:

    您应该能够通过 array_search()array_splice() 的组合来做到这一点。

    未经测试,但应该适用于只包含一次值的数组:

    $array = array("Apples", "strawberries", "pears");
    $searchpos = array_search("strawberries", $array);
    if ($searchpos !== FALSE) {
      array_splice($array, $searchpos, 1);
    }
    

    【讨论】:

    • 如果数组不包含任何草莓,这段代码会做什么?
    • 如果草莓在输入数组中出现两次怎么办?
    • 大多数日子也不是我的日子!
    【解决方案4】:

    简答unset($array[array_search('value', $array)]);

    说明

    1. 按值查找键:$key = array_search('value', $array);
    2. 按其键删除数组元素:unset($array[$key]);

    【讨论】:

      【解决方案5】:

      如果您的数组确实有唯一值,您可以使用 array_flip 翻转它们

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 1970-01-01
        • 2016-04-28
        • 2017-09-18
        相关资源
        最近更新 更多