-4

例: 既存のデータを db フィールドから取得: a、b、c、d、e だから今

$data= "a,b,c,d,e";

例: 追加される新しいデータ --- cc、gg db に保存される最終値は次のようになります。

$finaldatatobeupdatedintodb= "a,b,c,d,e,cc,gg";

いくつかの値を取得して追加します。

次に、それをカンマ リストに追加します。

新しい値が追加されたものを再構築/再追加するためにforループに配列に入れる必要なしに、内破と爆発で純粋にそれを行う方法は?

4

5 に答える 5

4

もし本当に destroy と implode を使いたいならようにすることができます:

まず、あなたが持っている文字列を分解します:

$data= "a,b,c,d,e";
$list = explode(',', $data);
var_dump($list);

これはあなたに与えるでしょう:

array
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string 'd' (length=1)
  4 => string 'e' (length=1)

次に、新しい要素を追加します。

$to_add = array('cc', 'gg');
$new_list = array_merge($list, $to_add);
var_dump($new_list);

$new_list今でしょ :

array
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string 'd' (length=1)
  4 => string 'e' (length=1)
  5 => string 'cc' (length=2)
  6 => string 'gg' (length=2)

最後に、',' をセパレータとして使用して、$new_list を内破します。

$output = implode(',', $new_list);
var_dump($output);

そして、あなたは得る:

string 'a,b,c,d,e,cc,gg' (length=15)

もちろん、配列から始めれば、実行する爆発が 1 つ少なくなります。追加したいデータが配列でない場合は、もう 1 つ爆発します...


しかし、ロブが指摘したように、あなたが提示している単純なケースでは、そのような複雑なコードは必要ありません: 文字列の連結で十分です;-)

配列/分解/内破ベースのソリューションの利点は、最終的な配列を文字列に内破する前に作業できることです(たとえば、並べ替えることができます)。

于 2009-08-10T17:48:59.577 に答える
2
$finaldatatobeupdatedintodb = $data . ',cc,gg';

それはあなたが必要なものですか?あなたの質問が何を求めているのかを正確に理解することは困難です。

于 2009-08-10T17:22:46.993 に答える
1

Robの答えに似ていますが、おそらくもう少し堅牢です。

$final = $data . (strlen($data) ? "," : "") . "cc,gg";

または、追加の値が配列として入力される場合:

$newValues = array("cc", "gg");
$final = $data . (strlen($data) ? "," : "") . implode(",", $newValues);
于 2009-08-10T18:13:43.397 に答える
0
<?

function addvalues($data, $value) {

  $array = Array();
  $array = explode(",", $data);

  // if value are an array, merge it, or just add as element
  if(is_array($value))
    $array = array_merge($array, $value);
  else
    $array[] = $value;

  return implode(",", $array);
}

// original string
$data = "a,b,c,d,e";

echo "Old data = ".$data."<br>";

// see the function, it will work with both arrays and variables
$data = addvalues($data, Array("cc"));
$data = addvalues($data, "gg");

echo "New data = ".$data."<br>";

?>
于 2009-08-10T17:54:40.813 に答える
0

カンマ区切りの値をデータベースに保存する必要がある理由について詳しく教えてください。通常、個別の値ごとに個別のフィールドを使用します。固定数の値がある場合は、代わりに SET フィールド タイプを使用できます。

通常、最善の解決策は、別のテーブルを使用することです。データベースの正規化に関するウィキペディアの年齢が役立つ場合があります。

于 2009-08-10T20:41:34.533 に答える