PHP分解关键字,但不要在末尾回显逗号


PHP explode keywords but dont echo comma on the end

我需要一个关键字列表来分割'keyword',但如何不在末尾打印逗号,我知道计数标签,检查是否是最后一个标签,不显示,但我对其他干净好的方式很感兴趣。

我是这样使用的:

$keywords = 'keyword1 keyword2 keyword3';
$keywords = explode(" ", $keywords);
foreach ($keywords as $keyword) {
echo "'" . $keyword . "', ";
}

这是打印:

'keyword1', 'keyword2', 'keyword3',

但我喜欢打印时最后不带逗号,用这种方式:

'keyword1', 'keyword2', 'keyword3'

您可以implode每个元素并打印结果:

$keywords = 'keyword1 keyword2 keyword3';
$keywords = explode(" ", $keywords);
// Add single quotes
$keywords = array_map(function($v) { return "'".$v."'"; }, $keywords);
echo implode(", ", $keywords);

这与(无引号)相同:

$keywords = 'keyword1 keyword2 keyword3';
echo str_replace(' ', ', ', $keywords);

如果必须这样做,我会使用爆炸、内爆和array_map的组合,类似于:

$keywords = 'keyword1 keyword2 keyword3';
$arrayOfKeywords = explode(' ', $keywords);
$mapped = array_map(function($value) {
    return "'{$value}'";
}, $arrayOfKeywords);
echo implode(', ', $mapped);

您可以使用implode:
你可以试试这样的东西:

<?php
$keywords = 'keyword1 keyword2 keyword3';
$keywords = explode(" ", $keywords);
echo "'". implode("', '", $keywords) . "'";
$keywords = 'keyword1 keyword2 keyword3';
$keywords = explode(" ", $keywords);
$num =  count($keywords);
$count = 1;
foreach ($keywords as $keyword) {
if($count == $num){
    echo "'".$keyword."'" ;
} else {
    echo "'".$keyword ."',";
}   
$count++;
}

使用数组函数来准备字符串不是最直接的方法。更好的做法是简单地在分隔空间上使用str_replace(),并手动将字符串用单引号括起来。单线解决方案。没有数组函数,没有迭代。

代码:(演示)

$keywords = 'keyword1 keyword2 keyword3';
echo "'",str_replace(' ',"', '",$keywords),"'";

输出:

'keyword1', 'keyword2', 'keyword3'

这是"干净"/"好"的方式。

$keywords = 'keyword1 keyword2 keyword3';
$keywords = explode(" ", $keywords);
$count = 1;
$comma = ',';
foreach ($keywords as $keyword) {
if($count == 3){
    $comma = '';
}
    echo "'" . $keyword .$comma;
$count++;
}

尝试

 $str = '';
    $keywords = 'keyword1 keyword2 keyword3';
    $keywords = explode(" ", $keywords);
    foreach ($keywords as $keyword) {
    $str .= "'" . $keyword . "',";
    } 
    echo substr($str,0,-1);
rtrim($string, ",") would cut trailing commas.
trim($string, ",") would cut trailing and prefixing commas.
substr($yourstring, 0, -1); //last character.