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);

そもそも、単一のデータベース列にコンマ区切りの値のリストを格納するべきではありません。これは、1 対多の関連付けのように見えますが、別のテーブルでモデル化する必要があります。

于 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 に答える
-1

あなたがすべき:

  1. 文字列を取得する
  2. 次に、値を配列に「分解」します
  3. 削除する番号なしで文字列を再作成します。
于 2012-08-13T15:09:03.397 に答える