2012-01-13 46 views
0

我有一个数组保存这些数据的:如何在PHP中创建一个包含给定数组键的字符串?

Array ( 
    [1402377] => 7 
    [1562441] => 7 
    [1639491] => 9 
    [1256074] => 10 
) 

如何可以创建一个包含上述阵列的钥匙串? 从本质上讲,我需要创建一个逗号分隔的字符串组成的数组的键

字符串看起来像:“键”,“钥匙”,“关键”

我需要创建一个新的数组由现有数组中的键组成?

我需要这样做的原因是因为我将使用WHERE in()语句来查询MySQL数据库。我宁愿不必使用foreach语句来查询数据库。我正确地处理这个问题吗?

我试过使用while语句,我可以打印我需要的数组键,但我需要这些键才能发送到我的模型。

,让我打印数组键的代码看起来是这样的:

while($element = current($array)) { 
      $x = key($array)."\n"; 
      echo $x; 
      next($array); 
     } 
+0

请注意[注入](http://unixwiz.net/techtips/sql-injection.html)漏洞。熟悉[数组函数](http://it.php.net/manual/en/ref.array.php)。 – outis 2012-01-13 07:28:56

+0

[PHP将数组拆分为两个数组 - 键数组和值数组](http://stackoverflow.com/questions/6234696/),[MySQL Prepared statement with a variable size variable list](http:// stackoverflow.com/questions/327274/)。 – outis 2012-01-13 08:01:03

+0

... [有一种方法来获取数组的所有键?](http://stackoverflow.com/questions/3407967/),[打印数组的键](http://stackoverflow.com/ (参考SQL IN子句?)(http://stackoverflow.com/questions/337704/),[PreparedStatement IN子句的替代?](http:// stackoverflow。COM /问题/ 178479/PreparedStatement的,在子句的替代品) – outis 2012-01-13 08:17:43

回答

3
$string = implode(',', array_keys($array)); 

顺便说一句,用于遍历数组考虑不要使用当前和未来,但使用的foreach:直到所有的记录都被访问(或根本不

foreach ($array as $key => $value) { 
    //do something 
} 

这将自动在阵列上迭代所有,如果有任何记录

2
$keys = array_keys($array); 
$string = implode(' ',$keys); 

在你的情况,你是不是正在使用的结果在IN条款,你应该做的: $字符串= implode(',',$ keys);

1
 

$yourString = ''; 
foreach($yourArr as $key => $val) { 
$yourString .=$key.","; 
} 
echo rtrim($yourString, ","); 

//OR 
$yourString = implode(",", array_keys($yourArray)); 
 

参见:array_keys

1
implode(', ', array_keys($array)); 
0
The string would look like: 'key','key','key' 

$string = '\'' . implode('\',\'', array_keys($array)) . '\''; 
0

内爆参数和结果插值到查询可引起injection漏洞。相反,通过repeating创建一个准备好的语句的一串参数占位符。

$paramList = '(' . str_repeat('?, ', count($array) - 1) . '?)' 
$args = array_keys($array); 
$statement = 'SELECT ... WHERE column IN ' . $paramList; 
$query = $db->prepare($statement); 
$query->execute($args); 
相关问题