【问题标题】:Removing unnecessary commas when concatenating variables into a comma separated list?将变量连接到逗号分隔列表时删除不必要的逗号?
【发布时间】:2013-02-23 20:23:21
【问题描述】:

当我连接 PHP 变量以形成逗号分隔列表时,无论该变量是否具有值,它都会添加一个逗号。

在将变量连接到逗号分隔列表时,如何删除不必要的逗号?

try {
    $stmt = $conn->prepare("SELECT * FROM customer_info WHERE user_id = :user_id");
    $stmt->bindValue(':user_id', $user_id);
    $stmt->execute();
}
catch (PDOException $e) {
    echo $e->getMessage();
}
$search = array('_', ',', 'Null');
$replace = array(' ', ', ', '');
$rows = str_replace($search, $replace, $row);

$merged_likes = $rows['items_like'] . ",  " . $rows['first_like'] . ",  " . $rows['second_like'] . ",  " . $rows['third_like'];
echo $merged_likes;

【问题讨论】:

  • 这不是小事吗?循环遍历所有“变量”并在将它们添加到最终结果之前检查它们是否为空。
  • @DCoder - 这是一个有趣的想法。我知道我可以这样做以便分别添加每一个(使用 .= 而不是单个 = 将新数据连接到变量的末尾),但这仍然会在第一个值的开头导致额外的逗号是空的。有什么建议吗?

标签: php variables concatenation comma


【解决方案1】:

my answer to your other question。一旦您将项目放入数组中,只需使用array_filter() 过滤掉任何空白的内容。示例:

$likes = array_filter($likes, function($item)
{
    return !empty($item);
});

echo implode(', ', $likes);

此语法仅适用于 PHP >=5.3.0。请参阅anonymous functions 了解更多信息。

编辑

正如 KingCrunch 在下面提到的,如果您的所有空白项 evaluate to false(例如,一个空字符串),您可以简单地省略回调函数:

$likes = array_filter($likes);
echo implode(', ', $likes);

// or more succinctly

echo implode(', ', array_filter($likes));

【讨论】:

  • 补充:不需要回调,当你要过滤掉的项目求值为false:$likes = array_filter($likes);
  • 我从来不知道。谢谢!
  • 这正是我所需要的,即使我不需要担心重复值,它也能完美运行 :-D 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-09-13
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 2021-09-05
相关资源
最近更新 更多