2016-07-13 5 views
-2

J'ai une case à cocher, lorsque les champs sont cochés, les champs sont retournés dans la table html. et je ne peux pas sembler enlever la dernière virgule.SUPPRIMER LE DERNIER COMMA POUR LA CHAÎNE

$faultTypesStr = ''; 
    if(!empty($faultTypeIds)){ 
    foreach($faultTypeIds as $faultTypeId){ 
     $faultTypeResult = FaultType::find()->where(['FaultTypeId' => $faultTypeId])->one(); 
     $faultTypesStr = $faultTypesStr.$faultTypeResult->FaultTypeName.', '; 
    }} 

Voici comment je l'affiche dans une table html. SMTP

 <tr> 
      <td class="fields"> <b>Type Of Fault</b></td> 
      <td>'.$faultTypesStr.'</td> 
     </tr> 

Répondre

5

Cette réponse se concentre sur le titre de votre question, il y a deux autres réponses qui fournissent une meilleure solution pour votre problème exact. Vous devriez construire cette sortie mieux en premier lieu et vous n'aurez pas besoin de couper.

Simple! Utilisez rtrim

$string=rtrim($string,','); 

Vous pouvez également donner plus de caractères à supprimer si nécessaire, par exemple

$string=rtrim($string,',.AbCd123'); // Remove Those individual chars if found at the end 

Et si vous voulez le faire pour le début de la chaîne, vous pouvez utiliser ltrim

Et si vous voulez le faire pour les deux parties utilisent trim

1

Vous pouvez modifier façon d'obtenir une sortie en bonne Yii2 façon

tir à la place plusieurs requêtes pour obtenir le feu de sortie unique requête

Code PHP

$faultTypesStr = ''; 
if(!empty($faultTypeIds)){ 
    $query = FaultType::find()->where(['FaultTypeId' =>$faultTypeIds])->all(); 
    $faultTypes = yii\helpers\ArrayHelper::map($query, 'FaultTypeId', 'FaultTypeName'); 
    $faultTypesStr = implode(',',$faultTypes); 
} 

SMTP Mail

<tr> 
    <td class="fields"> <b>Type Of Fault</b></td> 
    <td>'.$faultTypesStr.'</td> 
</tr> 
1

Comme alternative à la construction de la chaîne vous-même, vous pouvez ajouter les noms de type de défaut à un tableau, puis construire la chaîne avec implode().

$faultTypesNames = array(); 

if(!empty($faultTypeIds)) { 
    foreach($faultTypeIds as $faultTypeId) { 
     $faultTypeResult = FaultType::find()->where(['FaultTypeId' => $faultTypeId])->one(); 
     $faultTypesNames[] = $faultTypeResult->FaultTypeName; 
    } 
} 

$faultTypesStr = implode(',',$faultTypesNames); 
+1

Yep qui est la bonne chose à faire –