我使用foreach
循环创建了一个与其他字符串换行的字符串,并根据变量中给定的数字将这些字符串连接起来。像这样:
$Medio=''; //variable to handle the result
$MedioPago='12345'; //variable with numbers given
$chars = str_split($MedioPago); //split the numbers
foreach($chars as $char)
{
if($char=='1')
{
$Medio.='"codigo": "01",'.PHP_EOL;
}
else if($char=='2')
{
$Medio.='"codigo": "02",'.PHP_EOL;
}
else if($char=='3')
{
$Medio.='"codigo": "03",'.PHP_EOL;
}
else if($char=='4')
{
$Medio.='"codigo": "04",'.PHP_EOL;
}
else if($char=='5')
{
$Medio.='"codigo": "05",'.PHP_EOL;
}
}
$Medio = rtrim($Medio,',');
我的问题是,由于生成的字符串具有换行符,因此rtrim
不会删除最后一个逗号。
如何从结果字符串中删除最后一个逗号?
答案 0 :(得分:2)
每当构建一个逗号分隔的字符串时,我发现最好创建一个包含元素的数组,然后使用implode()
来将它们连接起来。这样可以避免删除最后一个逗号或任何无关的代码来跟踪正在进行的迭代。另外,只要您有类似这样的重复if / else语句,请尝试查找它们之间的相似之处并改用循环:
$list = [];
foreach (str_split($MedioPago) as $char) {
$list[] = sprintf('"codigo": "%02d"', $char);
}
$Medio = implode(",\n", $list);
答案 1 :(得分:1)
您可以使用substr
$newString = substr($Medio, 0, -3);
答案 2 :(得分:1)
在这种情况下,我喜欢使用的逻辑是有条件地在每个附加词前加逗号和EOL(在它们之前),但前提是该词不是第一个。被添加:
$Medio = NULL;
$MedioPago = '12345';
$chars = str_split($MedioPago);
foreach ($chars as $char) {
if ($Medio != NULL) {
$Medio.=','.PHP_EOL;
}
if ($char == '1') {
$Medio.='"codigo": "01"';
}
else if ($char == '2') {
$Medio.='"codigo": "02"';
}
else if ($char == '3') {
$Medio.='"codigo": "03"';
}
else if ($char == '4') {
$Medio.='"codigo": "04"';
}
else if ($char == '5') {
$Medio.='"codigo": "05"';
}
}
PHP可能具有可以在此处使用的字符串修剪功能,但是上述方法的工作方式是避免首先添加不必要的流逗号和EOL。
答案 3 :(得分:0)
这就是我最终要做的事情:正如Alex Howansky指出的那样,我刚刚添加了$Medio = rtrim($Medio,','.PHP_EOL)
来删除最后的换行符,然后再删除最后一个逗号。
$Medio=''; //variable to handle the result
$MedioPago='12345'; //variable with numbers given
$chars = str_split($MedioPago); //split the numbers
foreach($chars as $char)
{
if($char=='1')
{
$Medio.='"codigo": "01",'.PHP_EOL;
}
else if($char=='2')
{
$Medio.='"codigo": "02",'.PHP_EOL;
}
else if($char=='3')
{
$Medio.='"codigo": "03",'.PHP_EOL;
}
else if($char=='4')
{
$Medio.='"codigo": "04",'.PHP_EOL;
}
else if($char=='5')
{
$Medio.='"codigo": "05",'.PHP_EOL;
}
}
$Medio = rtrim($Medio,','.PHP_EOL);