我将数字存储在数据库中,其中包含5,55,15,17,2,35
我想从字符串中删除第5号,保持逗号分隔设置。
使用str_replace()
的问题是所有5个都将被删除。如果我使用str_replace('5,'', $string)
那很好,但是如果它在字符串的中间或结尾处,则逗号不会在5之后。同样的str_replace也会删除15和55中的部分
我错过了什么吗?
答案 0 :(得分:4)
$array = explode(',', $string);
foreach ($array as $k => $v)
if ($v == 5) unset($array[$k]);
$string = implode(',', $array);
您可能不应该首先在单个数据库列中存储以逗号分隔的值列表。它看起来像一对多关联,应该用一个单独的表建模。
答案 1 :(得分:0)
首先用逗号分割字符串,这样你就可以直接处理这些数字了。从数组中删除5,然后将数组重新组合成逗号分隔的字符串。
以下是一个例子:
<?php
$input = '5,55,15,17,2,35';
echo "Input: $input<br />";
// Split the string by "exploding" the string on the delimiter character
$nums = explode(',', $input);
// Remove items by comparing to an array containing unwanted elements
$nums = array_diff($nums, array(5));
// Combine the array back into a comma-delimited string
$output = implode(',', $nums);
echo "Output: $output<br />";
// Outputs:
// Input: 5,55,15,17,2,35
// Output: 55,15,17,2,35
?>
答案 2 :(得分:0)
str_replace([$num.",",",".$num],"",$input);
答案 3 :(得分:0)
U可以尝试这样的事情:
// Convert string into array of numbers
$arrOfNumbers = explode(',', $string);
// Find id of number for del
$numberForDelId = array_search($numberForDel, $arrOfNumbers);
//Delete number
unset($arrOfNumbers[$numberForDelId]);
// Convert back to string
$resultString = implode(',' $arrOfNumbers)
答案 4 :(得分:-1)
你应该: