2014-09-01 119 views
2

我有以下数组结果:爆炸PHP数组

Array ([0] => company_1 [1] => company_10 [2] => company_15) 

我想要的结果是这样的,因为我可以在mysql IN查询子句中使用:

$result= "1, 10, 15"; 

我使用爆炸功能,但它再次是这样分别返回两个数组值:

Array ([0] => Array ([0] => company [1] => 1) [1] => Array ([0] => company [1] => 10) [2] => Array ([0] => company [1] => 15)) 

但想知道如何才能得到数字分开存储在一个字符串中。

任何帮助? '

+1

为什么要炸开一个数组来创建一个字符串?你肯定想内爆? – andrew 2014-09-01 01:31:01

+0

@andrew:是的。但首先我必须使用爆炸,因为我可以将公司的号码分开。 – 2014-09-01 01:33:32

+0

http://stackoverflow.com/questions/907806/php-mysql-using-an-array-in-where-clause – 2014-09-01 01:34:08

回答

3

如果您最初的数据是一个数组,只是爆炸他们又各自他们收集他们的内部,然后最后再使用破灭。例如:

$result = array('company_1', 'company_10', 'company_15'); 
$result = array_map(function($piece){ 
    return explode('_', $piece)[1]; // note: for php 5.4 or greater 
    // return str_replace('company_', '', $piece); 
}, $result); 
$result = implode(', ', $result); 
echo $result; // 1, 10, 15 
+1

如果'company_'恒定,dagons解决方案可能是最好的 – Ghost 2014-09-01 01:37:47

1

爆炸后必须选择第二部分。

$result = array_map(function ($val) { 
    $tmp = explode('_', $val); 
    return isset($tmp[1]) ? $tmp[1] : null; 
}, $array); 

$result = implode(',', $result); // "1,10,5" 
+0

我认为你想'_',而不是'-' – Phil 2014-09-01 01:34:15

+3

如果“company_”永远不会改变 – 2014-09-01 01:34:27

+0

@ Dagon的权利,str_replace()可能会更快。一个简单的'implode'和'str_replace'会更快,更简单 – Phil 2014-09-01 01:36:55