7

我有一个看起来像这样的数组:

array('first' => 'value1', 'second' => 'value2', ...);

如何获取所有密钥并将它们放在逗号分隔的字符串中?

最后我需要这样的东西来做一个查询:

values IN ('first','second',...)

谢谢

4

5 回答 5

15

应该足够了:

echo "'".implode("','", array_keys($array))."'";
于 2013-01-17T13:44:33.980 回答
2

array_keys将抓住所有的键,implode将它们组合成一个字符串。

implode("','", array_keys($array));
于 2013-01-17T13:45:17.213 回答
2

简单的答案是用来array_keys()获取数组索引。

但是,由于您在 SQL 中使用它,因此正确转义值也很重要:

$db = new PDO( ... );
$sql .= "value IN (" . 
        join(', ', array_map(array($db, 'quote'), array_keys($arr))) . ")";

或者,当您更喜欢使用准备好的语句时:

$stmt = $db->prepare('... WHERE value IN (' . 
    join(',', array_fill(0, count($arr), '?')) . ')');
$stmt->execute(array_keys($arr));
于 2013-01-17T13:51:49.547 回答
0

有一个 at array_keys。这似乎是你需要的东西。要组合密钥,请按照许多其他用户的建议使用 implode:

implode("','", array_keys($array));
于 2013-01-17T13:44:32.513 回答
0
$result = '';
$keys = array_keys($array);

foreach($keys as $key) { 
$result .= $key.',';
}

$result = rtrim($result, ',');
于 2013-01-17T13:46:09.717 回答