2013-05-10 62 views
2

我有两个变量,这种结构:合并两个数组并限定所有其他与符号(=)

$columns = "col1, col2, col3"; 

$values = "$value1, $value2, $value3"; 

什么我需要做的就是:

$combined = "col1 = $value1, col2 = $value2, col3 = $value3"; 

我敢肯定我需要:

explode(',', $columns); 
explode (',', $values); 
$combined = array_combine($columns, $values); 
$combined = implode(',', $combined); 

但当时我只是得到:

$combined = "col1, $value1, col2, $value2, col3, $value3"; 

如何将每个逗号替换为“=”?

这是最好的方式去做这件事吗?

+0

,让COL1 = $值1 = col2 =等... – Edward 2013-05-10 14:57:53

+0

,就像它不见了哈哈。 – Edward 2013-05-10 14:58:32

+0

大声笑,对不起,我回答太快,然后我意识到我错了:) – HamZa 2013-05-10 14:59:24

回答

3
$columns = 'col1, col2, col3'; 
$values = '$value1, $value2, $value3'; 

$result = implode(
    ', ', 
    array_map(
     function ($c, $v) { 
      return $c . ' = ' . $v; 
     }, 
     explode(',', $columns), 
     explode(',', $values) 
    ) 
); 

var_dump($result); 

但是,如果你想要这个构建SQL INSERT语句,使用的MySQLi或PDO准备语句来代替

+0

Array_map呵呵?哇。会放弃它! – Edward 2013-05-10 15:03:03

+0

是的,它是什么。我希望它插入,然后更改查询更新,但其更改不同的结构。 – Edward 2013-05-10 15:04:52

+1

是的,检查它的行动:http://eval.in/25369 – Sumoanand 2013-05-10 15:05:26

1

这应该工作....

$columns = explode(',', $columns); 
$values = explode (',', $values); 
$combined = array_combine($columns, $values); 
array_walk(&$combined, function(&$v, $k){ 
    $v = $k."=".$v; 
}); 
$combined = implode(",",$combined);