如何从数组php中删除一个值

时间:2018-01-16 18:33:50

标签: php

您好,我有这段代码,我想更正,因为它删除了所有相同的值,我想删除一个值

            $rows = "944,1001,1001,3946";
            $sesto = explode(",",$rows);
            $arr = array_diff($sesto,array(1001));
            $comma_separated = implode(",", $arr);
            echo $comma_separated;

我希望 944,1001,3946

3 个答案:

答案 0 :(得分:1)

您可以使用array_search查找第一个匹配项的索引,然后使用array_splice将其删除:

$rows = "944,1001,1001,3946";
$arr = explode(",",$rows);
array_splice($arr, array_search(1001, $arr), 1);
$comma_separated = implode(",", $arr);
echo $comma_separated;

请注意,这假定元素存在于数组中。如果您尝试删除不存在的元素,则会删除第一个元素。如果您不想要这种行为,请使用它来确保在删除之前找到一个元素:

$rows = "944,1001,1001,3946";
$arr = explode(",",$rows);

$index = array_search(1001, $arr);
if ( $index !== false ) 
    array_splice($arr, $index, 1);

$comma_separated = implode(",", $arr);
echo $comma_separated;

答案 1 :(得分:1)

您正在询问如何从数组中删除值,但看起来您确实需要将其从字符串中删除。你从一个字符串开始,然后在输出之前将它转回一个字符串。如果情况确实如此,您可以使用preg_replace直接从字符串中删除值,而无需来回转换为数组。

$value = 1001;
$rows = preg_replace("/\b{$value},|,{$value}$/", '', $rows, 1);
echo $rows;

我不是正则表达式专家,因此可能有更好的方法来编写正则表达式,但这适用于您的示例,即使可以优化特定的正则表达式,一般的想法也是一样的。

最后一个参数将替换限制为1.

答案 2 :(得分:0)

为简单起见array_unique($sesto)

了解更多信息https://www.w3resource.com/php/function-reference/array_unique.php

希望这有帮助。