首页 > 解决方案 > 当多个存在时从数组中删除值只需删除一个

问题描述

我有一个像这样的数组:

[a, b, c, d, e]

在这种情况下,我有一个要从数组中删除的值a

现在数组应该是这样的:

[b, c, d, e]

这很容易,我可以做到:

$del_var = 'a';
if (($key = array_search($del_val, $array)) !== false) {
    unset($messages[$key]);
}

但在我有一个包含a两次或更多搜索值的数组的情况下,我只想将值的计数减少一。像这样:

[a, a, a, b, c, d]

应该给我:

[a, a, b, c, d]

我该怎么办?

标签: phparraysreduce

解决方案


您可能可以使用以下方法获得一个密钥实例array_keys

if (($key = array_search($del_var, $array)) !== false) {
    $keys = array_keys($array, $del_var);
    // get the first key;
    if (!empty($keys)) {
        unset($messages[$keys[0]]);
    }
}

假设您正在搜索a,array_keys应该产生ainside的所有关键索引$array。然后只需获取第一个(或取决于您想要多少),您可以使用出现次数取消设置它们。


推荐阅读