我想在最后两个MySQL结果之间添加单词“and”。我可以添加逗号,但我需要在第一个之间添加逗号,然后在最后两个之间添加“和”。
以下是我正在使用的代码:
$not_first = false;
foreach($solos as $solo)
{
if ($not_first)
{
echo ', ';
}
$not_first = true;
echo $solo->id;
}
我可以回复'和'而不是逗号。但如果我有3个或更多结果,它会说“结果和结果,结果和结果”。我希望它说“结果,结果,结果和结果”。
有什么想法吗?
答案 0 :(得分:3)
尝试使用下一个想法
if (count($solos) > 2) {
$last = array_pop($solos);
echo implode(', ', $solos) . ' and ' . $last;
}
else
{
echo implode(' and ', $solos);
}
答案 1 :(得分:2)
你可以算一下,在倒数第二个id附加“和”而不是“,”
$x = count($solos);
foreach($solos as $solo){
echo $solo->id;
if ($solos[$x - 2] == $solo){
echo 'and';
}elseif ($solos[$x -1] != $solo && $solos[0] != $solo){
echo ','
}
}
答案 2 :(得分:1)
在这种情况下,我更倾向于使用for
代替foreach
:
for($i=0; $i<count($solos); $i++){
echo $solos[$i]->id;
if($i == count($solos) - 2){ // --> second last element, implies "and"
echo " and ";
}
else{
if($i != count($solos) - 1){ // --> "," for all other elements, except last
echo ", ";
}
}
}
答案 3 :(得分:0)
或者使用它:
$i = 1;
$last = count($solos);
foreach($solos as $solo)
{
if ($i > 1 && $i != $last)
{
echo ', ';
}
elseif ( $i == $last )
{
echo ' and ';
}
echo $solo->id;
$i++;
}
答案 4 :(得分:0)
其他答案完美无缺。为了完整起见,您还可以插入&#34;和&#34;使用preg_replace。
$solos = array( 'one', 'two', 'three', 'four' );
$result = implode(', ',$solos);
$result = preg_replace('/, ([^,]+)$/',', and \1', $result);
超过100万次迭代, mnv&#39> array_pop方法耗时2.13秒。 preg_replace在3.65秒内完成。使用array_pop会更好。