2013-05-09 40 views
-1

下面是一个例子...合并数组。第二阵列称为“列”

我有以下代码:

$a=array("a","b","c"); 
$b=array("1","2","3"); 

$c = array_merge($a,$b); 

echo "<pre>"; 
var_dump($c); 
echo "</pre>"; 

给了我一个输出:

array(6) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "b" 
    [2]=> 
    string(1) "c" 
    [3]=> 
    string(1) "1" 
    [4]=> 
    string(1) "2" 
    [5]=> 
    string(1) "3" 
} 

我怎么可能改变代码,以便它给我这个输出:

array(3) { 
    [0]=> 
    string(5) "a','1" 
    [1]=> 
    string(5) "b','2" 
    [2]=> 
    string(5) "c','3" 

任何想法?

+0

的目的是什么? – Rikesh 2013-05-09 09:26:09

+0

'array_combine'为另一个不错的选择 – 2013-05-09 09:28:53

+0

array_combine使用一个数组作为键和另一个数值,所以不会得到@Vytautas要求的结果 – fullybaked 2013-05-09 09:30:15

回答

4
$c = array_map(function ($a, $b) { return "$a','$b"; }, $a, $b); 

无论出于何种这有利于...

+0

很高兴看到一个使用array_map与多个阵列的例子,我忘记了你可以做到这一点 – 2013-05-09 09:39:04

+0

整洁的解决方案:) – fullybaked 2013-05-09 09:42:34

0

如果密钥到两个数组始终在奇偶校验,你可以不喜欢

foreach ($a as $key => $value) { 
    $newArray[] = "$value','{$b[$key]}"; 
} 

var_dump($newArray); 
// would output the below 
array(3) { 
[0]=> 
    string(5) "a','1" 
    [1]=> 
    string(5) "b','2" 
    [2]=> 
    string(5) "c','3" 

但是,结果看起来有点怪异,你确定这是你想达到什么样的?

+0

是的,这是我想要的结果;)。谢谢。 – 2013-05-09 09:36:06

0
$a=array("a","b","c"); 
$b=array("1","2","3"); 

if(count($a) > count($b)){ 
    foreach($a as $key => $value) 
     $c[$key] = isset($b[$key])? $value.",".$b[$key] : $value; 
} else { 
    foreach($b as $key => $value) 
     $c[$key] = isset($a[$key])? $a[$key].",".$value : $value; 
} 

使用上面的代码它将为您的数组。

1

使用SPL的MultipleIterator:

$a = array("a","b","c"); 
$b = array("1","2","3"); 

$mi = new MultipleIterator(); 
$mi->attachIterator(new ArrayIterator($a)); 
$mi->attachIterator(new ArrayIterator($b)); 

$c = array(); 
foreach($mi as $row) { 
    $c[] = $row[0] . "','" . $row[1]; 
} 

var_dump($c); 
+0

反码高尔夫,我们? ;-D – deceze 2013-05-09 09:36:16

+0

玩得开心,此刻玩SPL很多:你变得简单,我已经变得复杂了 – 2013-05-09 09:36:38

+0

这看起来很有趣。不知道你能做到这一点.. – 2013-05-09 09:41:17