7

I have an array that looks like this:

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

How can I get all the keys and put them in a comma separated string?

At the very end I need something like this, to do a query:

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

Thanks

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

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 に答える