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.