php implode patlayabilir yapabilir?

4 Cevap php

eg: existing data retrieve from db field: a,b,c,d,e so now

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

eg: new data to be added--- cc, gg final value saved into db will be

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

Dışarı almak ve birkaç değerleri ekleyin.

Sonra virgül listesine geri ekleyin.

Implode ile tamamen bunu yapmak ve yeniden / yeni değerler eklenmiş şeyi yeniden eklemek için döngü için diziye koymak gerek kalmadan, patlamaya nasıl?

4 Cevap

Eğer gerçekten explode ve implode kullanmak istiyorsanız, böyle bir şey yapabilirsiniz:

Öncelikle, sahip dize patlayabilir:

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

Size verecektir:

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)

Ardından, yeni öğeler eklemek:

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

$new_list şimdi:

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)

Ve son olarak, bir ayırıcı olarak ',' kullanarak, $ new_list implode:

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

Ve sen olsun:

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

Eğer bir dizi ile başlamak Tabii ki, bu bir daha yapmak patlayabilir bulunuyor; Eklemek istediğiniz veri bir dizi değilse ve bunu patlayabilir tane daha var ...


But, as Rob pointed out, in the simple case you are presenting, there is no need for such a complicated piece of code : strings concatenations will be more than enough ;-)

Dizi / patlayabilir / implode bazlı solüsyon ile avantajı bir dizeye imploding önce son dizi üzerinde çalışmak olduğunu (say, for instance, you can sort it)

$finaldatatobeupdatedintodb = $data . ',cc,gg';

Bu ne ihtiyaç vardır? Bu soruda tam olarak anlamak zor.

Ramiz'in cevap benzer, ama muhtemelen biraz daha sağlam:

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

ya da, sizin ekstra değerler bir dizi olarak geliyor ise:

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

Eğer bir veritabanında virgülle ayrılmış değerleri saklamak için neden ihtiyaç hakkında daha fazla detay verebilir misiniz? Normalde farklı ayrık değerler için ayrı alanlar kullanmak istiyorsunuz. Eğer değerler sabit bir numarası varsa yerine SET alan türünü kullanabilirsiniz.

Normal olarak en iyi çözüm ayrı bir tablo kullanmaktır. Üzerinde Wikipedia'nın yaşı Database normalization yardımcı olabilir.