2012-01-13 45 views

回答

1

问题不是很清楚,但可能你想这样的:

$a=array("1" => "A", "2" => "B", "3" => "C", "4" => "D"); 
$b=array("1" => "a", "2" => "a", "3" => "a"); 
$ab = array(); 
foreach($a as $key => $value) { 
    $ab[$key] = array($a[$key], $b[$key]); 
} 
print_r($ab); 

UPDATE:

Array 
(
    [1] => Array 
     (
      [0] => A 
      [1] => a 
     ) 
    [2] => Array 
     (
      [0] => B 
      [1] => a 
     ) 
    [3] => Array 
     (
      [0] => C 
      [1] => a 
     ) 
    [4] => Array 
    (
     [0] => D 
     [1] => 
    ) 
) 
+0

我需要在结果数组中添加一列,并在该列中,我只打印与第一个数组具有相同键值的不同名称 – user1148297 2012-01-13 19:08:09

+0

您能否请求告诉我你是如何在PHP中存储array1和array2的。 – anubhava 2012-01-13 19:14:09

0

两个数组$ a和$ b

$n = max(count($a), count($b)) 
for ($i=0; $i<$n; $i++) { 
    echo "$i\t"; 
    echo ! empty($a[$i]) ? $a[$i] : ''; 
    echo "\t"; 
    echo ! empty($b[$i]) ? $b[$i] : ''; 
    echo "\n"; 
} 

编辑,或者如果你想创建一个新的数组 “RET”

$ret = array(); 
$n = max(count($a), count($b)) 
for ($i=0; $i<$n; $i++) { 
    $ret[] = array(
     "id" => $i, 
     "a" => ! empty($a[$i]) ? $a[$i] : '', 
     "b" => ! empty($b[$i]) ? $b[$i] : '' 
    ); 
} 
0

我见解决方案中的问题:

  • 是不是有可能Array-1丢失了Array-2的某些键?

所以我建议稍微更复杂的解决方案:

$array_out = array(); 
$all_keys = array_unique(array_merge(array_keys($array1), array_keys($array2))); 

foreach($all_keys as $key) 
{ 
    $array_out[$key] = array(

      'UPPER' => array_key_exists($key, $array1) ? $array1[$key] : null, 
      'lower' => array_key_exists($key, $array2) ? $array2[$key] : null 
    ); 
} 
+0

是的,阵列2可能与阵列1没有相同的密钥。 – user1148297 2012-01-13 19:11:02

+0

我刚看到你需要它输出到HTML。这只是将数组放在一起,您将需要遍历结果数组并输出表。 – 2012-01-13 19:43:34

0
<html> 
<nada nada> 
<body> 
<nada nada> 
<table> 
<?php 
foreach ($array1 as $k=>$v) { 
    $vv=isset($array2[$k])?$array2[$k]:'--'; 
?> 
<tr> 
<td><?php echo $k; ?></td> 
<td><?php echo $v; ?></td> 
<td><?php echo $vv; ?></td> 
</tr> 
<?php 
} 
?> 
</table> 
<nada nada> 
</body></html> 
相关问题