用&符号替换最后一个逗号

iai*_*ain 5 php substr implode array-filter

我到处搜索,但找不到适合我的解决方案.

我有以下内容:

$bedroom_array = array($studio, $one_bed, $two_bed, $three_bed, $four_bed);
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我们说:

$studio = '1';
$one_bed = '3';
$two_bed = '3';
Run Code Online (Sandbox Code Playgroud)

然后我使用implode函数在所有值之间添加逗号:

$bedroom_list = implode(", ", array_filter($bedroom_array));
echo $bedroom_list;
Run Code Online (Sandbox Code Playgroud)

然后输出:

1,2,3

我想要做的是找到字符串中的最后一个逗号并用&替换它,所以它会读取:

1,2和3

字符串不会总是这么长,可以更短或更长,例如1,2,3,4等等.我已经研究过使用substr但是我不确定这是否适用于我需要的东西?

Mic*_*ski 27

弹出最后一个元素,将其余元素一起内爆,然后将最后一个元素重新打开.

$bedroom_array = array('studio', 'one_bed', 'two_bed', 'three_bed', 'four_bed');
$last = array_pop($bedroom_array);
$string = count($bedroom_array) ? implode(", ", $bedroom_array) . " & " . $last : $last;
Run Code Online (Sandbox Code Playgroud)

如有必要,转换&为实体&.

  • 我要改变`$ string = implode(",",$ bedroom_array)."&".$ last;`到`$ string = count($ bedroom_array)?implode(",",$ bedroom_array)."&".$ last:$ last;`用于覆盖pop之前数组中只有一个元素的情况.此外,如果这只是直接浏览器,请使用''& ''而不是`'&'`. (2认同)

cod*_*eak 5

如果你有逗号分隔的单词列表,你可以使用:

$keyword = "hello, sadasd, sdfgdsfg,sadfsdafsfd, ssdf, sdgdfg";
$keyword = preg_replace('/,([^,]*)$/', ' & \1', $keyword);
echo $keyword;

它会输出:hello,sadasd,sdfgdsfg,sadfsdafsfd,ssdf&sdgdfg