PHP kullanarak bir dizeden son virgülü nasıl kaldırırım?


99

Veritabanımdan değerler almak için bir döngü kullanıyorum ve sonucum şöyle:

'name', 'name2', 'name3',

Ve bunu şöyle istiyorum:

'name', 'name2', 'name3'

Döngünün son değerinden sonra virgülü kaldırmak istiyorum.


11
You should implodeorijinal virgül, sonunda değil üzerlerinden döngü ve kaldır şeylerle değerler.
— moonwave99

Yanıtlar:


220

Şu rtrimişlevi kullanın :

rtrim($my_string, ',');

İkinci parametre silinecek karakteri gösterir.


27
Ayrıca virgülden sonra boşluk olmadığından emin olun, aksi takdirde bu başarısız olur veya rtrim (trim ($ my_string), ',') olur.
— Foxhoundn

Mükemmel cevap!
— DiChrist

@Foxhoundn Yorumunuz kurtarıcıdır. Teşekkürler kardeşim
— Jaydeep Goswami

1
Bu, tüm virgülleri kaldıracağı için sonuna virgül ekleyen bir döngüde çalışmaz.
— LizardKG

25

Deneyin:

$string = "'name', 'name2', 'name3',";
$string = rtrim($string,',');

1
Zaten denedim ama şu şekilde görünüyor: 'name''name2''name3' İhtiyacım olan bu değil
— JoJo

Örneğinize göre, bu işlevi her bir değere ayrı ayrı değil, yalnızca nihai sonuca uygulamanız gerekir.
— Boaz

Döngü kullanıyorum, bu yüzden döngünün nihai sonucunu nasıl bilebilirim?
— JoJo

Döngünün nihai sonucu bir değişkende saklanır, değil mi? Yani rtrimçağrıyı bu değişkene uygulayın. Hala zorluk yaşıyorsanız, sorunuzu döngüyü oluşturan kodla güncelleyin.
— Boaz

Bu yanıtı özellikle beğendim, çünkü PHP yerleşik işlevlerinin çoğunun sorunlarından biri, bazılarının geçersiz olması ve bazılarının dönüş türlerine sahip olmasıdır. Bu durumda, rtrim($string, ',')yazmam gerekirken yazmaya çalışıyordum$string = rtrim($string, ',');
— Alec

14

Aşağıdaki kodu deneyin:

$my_string = "'name', 'name2', 'name3',";
echo substr(trim($my_string), 0, -1);

Dizenin son karakterini kaldırmak için bu kodu kullanın.


10

Bunu substrkaldırmak için işlevi kullanabilirsiniz .

$t_string = "'test1', 'test2', 'test3',";
echo substr($t_string, 0, -1);

7

rtrim işlevi

rtrim($my_string,',');

İkinci parametre virgülün sağ taraftan silineceğini gösterir.



4

Alt dize oluşturduğunuz çok baytlı metinle çalışıyorsanız, komut dosyanızı etkiler. Durum buysa, php.ini'nizde mb_ * işlevlerini etkinleştirmenizi veya bunu yapmanızı şiddetle tavsiye ederim.ini_set("mbstring.func_overload", 2);

$string = "'test1', 'test2', 'test3',";
echo mb_substr($string, 0, -1);


2

bu kadar basit:

$commaseparated_string = name,name2,name3,;
$result = rtrim($commaseparated_string,',');

2

Bu amaçla implode kullanmak daha iyidir. Implode kolay ve harika:

    $array = ['name1', 'name2', 'name3'];
    $str = implode(', ', $array);

Çıktı:

    name1, name2, name3

Veritabanı okunan değerlerden önce bir dizi oluşturmak gereksizdir. rtrim & substr hem geçerli hem de iyi çözümlerdir.
— Steve Horvath

Pekala, haklısın ama bir diziniz varsa bu kullanışlı bir çözüm
— khandaniel

2

Son virgülü (,) kaldırmak için aşağıdaki tekniklerden birini kullanabilirsiniz.

Çözüm 1:

$string = "'name', 'name2', 'name3',";  // this is the full string or text.
$string = chop($string,",");            // remove the last character (,) and store the updated value in $string variable.
echo $string;                           // to print update string.

2.Çözüm:

$string = '10,20,30,';              // this is the full string or text.
$string = rtrim($string,',');
echo $string;                       // to print update string.

3. Çözüm:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  

0

Bir döngü sırasında uygulanacak çözümler:

//1 - Using conditional:

$source = array (1,2,3);
$total = count($source);
    
$str = null;
    
for($i=0; $i <= $total; $i++){ 
        
    if($i < $total) {
        $str .= $i.',';
    }
    else {
        $str .= $i;
    }
}
    
echo $str; //0,1,2,3

//2 - Using rtrim:

$source = array (1,2,3);
$total = count($source);

$str = null;

for($i=0; $i <= $total; $i++){ 
    
        $str .= $i.',';
}

$str = substr($str,0,strlen($str)-1);
echo $str; //0,1,2,3
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.