您好,我有这段代码,我想更正,因为它删除了所有相同的值,我想删除一个值
$rows = "944,1001,1001,3946";
$sesto = explode(",",$rows);
$arr = array_diff($sesto,array(1001));
$comma_separated = implode(",", $arr);
echo $comma_separated;
我希望 944,1001,3946
答案 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
希望这有帮助。