在不使用循环的情况下在单引号内拆分数组

时间:2014-05-26 19:45:56

标签: php arrays

我有一系列的ID(123456,654789,395855)。我将需要用单个qoute和逗号分割它,以便能够在mysql查询中使用它。实际上我需要IN()函数。

是否有任何本机php函数将所有数组节点放在引号内(检索字符串)而不使用任何循环?

到目前为止,我想出了这个。但我正在寻找更好的方式。

$ids = array(123456,654789,395855);
foreach ($ids as $id){
     $stringIds .= "'". $id . "',";
}

$stringIds = rtrim ($stringIds, ",");

debug($stringIds);

5 个答案:

答案 0 :(得分:4)

像往常一样使用implode(),在之前/之后使用一些额外的引号:

$ids = array(123456,654789,395855);
$string = "'" . implode("','", $ids) . "'";

答案 1 :(得分:0)

不,没有本机功能可以做到这一点。你有什么工作就好了。

答案 2 :(得分:0)

您可以使用implodearray_map来实现此目标:

implode(', ', array_map(function($id) { return "'$id'"; }, $ids));

答案 3 :(得分:0)

您可以使用array_mapimplode,也可以查看array_reduce

$ids = array(123456,654789,395855);
$quoted = array_map(function($id) { return "'$id'"; }, $ids);
$stringIds = implode(', ', $quoted);
echo $stringIds;

请参阅ideone

答案 4 :(得分:0)

您可以使用php的内爆功能将数组分成单引号和逗号分隔列表。

$array = array(123456,654789,395855);
$comma_list = "'" .implode("', '", $array) . "'";
echo $comma_list;

以下是对文章的引用。

http://codingcyber.com/how-split-array-single-quotes-and-comma-separated-list-php-57/