0

我正在将数字存储在数据库中,其中包含类似的字符串5,55,15,17,2,35

我想从字符串中删除说数字 5,保持逗号分隔设置不变。

使用的问题str_replace()是所有的 5 都将被删除。如果我使用str_replace('5,'', $string)那很好,但如果逗号位于字符串的中间或末尾,则逗号不会在 5 之后。同样的 str_replace 也会删除 15 和 55 的一部分,

我错过了什么吗?

4

5 回答 5

4
$array = explode(',', $string);
foreach ($array as $k => $v)
  if ($v == 5) unset($array[$k]);
$string = implode(',', $array);

首先,您可能不应该将逗号分隔的值列表存储在单个数据库列中。它看起来像一个一对多的关联,应该用一个单独的表来建模。

于 2012-08-13T15:09:42.533 回答
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

?>
于 2012-08-13T15:08:45.037 回答
0
str_replace([$num.",",",".$num],"",$input);
于 2016-03-29T12:57:35.593 回答
0

你可以尝试这样的事情:

// 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)
于 2020-05-13T12:51:56.913 回答
-1

你应该:

  1. 获取字符串
  2. 然后将值“分解”到数组中
  3. 并重新创建没有要删除的数字的字符串。
于 2012-08-13T15:09:03.397 回答