2013-08-23 39 views
2

我已經使用array_combine打印出2個不同的數組,但該函數使用第一個數組作爲索引,並且他壓縮了具有相同內容的值。即使具有相同的值,我也需要打印輸出。關於如何解決這個問題的一些提示PHP 2數組在Foreach循環?

function mostra_2com($valor, $valor2){ 
    echo "<table class='bs'><tr><td><b>Atividades</b></td><td><b>Opiniões</b></td></tr>"; 
    foreach (array_combine($valor, $valor2) as $val => $val2) 
    echo "<tr><td>".$val." </td><td> ".$val2."<br></td></tr>"; 
    echo"</table>"; 
} 
enter code here 
+0

他們有相同的長度嗎? – MisterBla

+0

你可以展示你的兩個數組的例子嗎? –

回答

3

你可能想使用MultipleIterator

$mi = new MultipleIterator(MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC); 
$mi->attachIterator(new ArrayIterator($valor), 'val'); 
$mi->attachIterator(new ArrayIterator($valor2), 'val2'); 

foreach ($mi as $values) { 
    extract($values); 
    echo '<tr><td>', $val, '</td><td>', $val2, '<br></td></tr>'; 
} 

這兩個數組遍歷在同一時間和每次迭代的產量$values像這樣的數組:

array('val' => 1, 'val2' => 4); 

在這個例子14分別來自$valor$valor2。然後我在循環內使用extract()將這些鍵綁定到實際變量。

+0

我可以把它放在一個函數中? –

+0

@MarceloAymone是的,當然! –

+0

如果PHP> 5.5你可以在foreach中使用list()以及 –

0

也許對於一個SPL multipleiterator的情況下:

$valor = array(10, 20, 30); 
$valor2 = array(15, 10, 15); 

$mi = new MultipleIterator(MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC); 
$mi->attachIterator(new ArrayIterator($valor), 'val'); 
$mi->attachIterator(new ArrayIterator($valor2), 'val2'); 
foreach($mi as $details) { 
    echo "<tr><td>" . $details['val'] . "</td><td>" . $details['val2'] . "<br></td></tr>"; 
} 

PHP> 5.5

$valor = array(10, 20, 30); 
$valor2 = array(15, 10, 15); 

$mi = new MultipleIterator(); 
$mi->attachIterator(new ArrayIterator($valor)); 
$mi->attachIterator(new ArrayIterator($valor2)); 
foreach($mi as list($val, $val2)) { 
    echo "<tr><td>" . $val. "</td><td>" . $val2. "<br></td></tr>"; 
} 
0

你可以使用array_merge()

$a = array('1', '2'); 
$b = array('1', '4'); 
$c = array_merge($a,$b); 
print_r($c); 
// Array ([0] => 1 [1] => 2 [2] => 1 [3] => 4); 
0

試試這個:

function my_array_combine($keys, $values) { 
    $result = array(); 
    foreach ($keys as $i => $k) { 
     $result[$k][] = $values[$i]; 
    } 
    array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;')); 
    return $result; 
} 

http://php.net/manual/en/function.array-combine.php翻錄 應該可以使這個代碼更快,如果你正在做< 1,000,000項目,而不是現在的問題。