2014-12-24 2 views
1

Я хочу работать как с массивом одновременно
вы поймете, что я хочу просто проверить цикл ЕогеаспаДва многомерный массив в Foreach

<?php 
$ar = array("az"=>"1"); 
$ar2 = array("az2"=>"2"); 
*foreach ($ar as $key => $value and $ar2 as $key2 => $value2) { 
    echo $key2 ."<br>".$key; 
} 
die(); 
?> 
+2

пользователя для цикла вместо Еогеасп –

+0

размер обоих массива одинаковы или нет –

+0

, если размер обоих массива же идти с цикл и работать с индексом – Affan

ответ

3
foreach (array_combine(array_keys($ar), array_keys($ar2)) as $key => $key2) { 
    echo $key, ', ', $key2, '<br>'; 
    echo $ar[$key], ', ', $ar2[$key2], '<br>'; 
} 

Это строго требует, чтобы оба массива имеет одинаковое число элементов ,

В качестве альтернативы, если вы хотите вернуться какое-то новое значение вместо отображения, я предлагаю следующее:

$result = array_map(
    function ($key, $val, $key2, $val2) { 
     return /* something like array("$key-$key2" => "$val-$val2") */; 
    }, 
    array_keys($ar), $ar, array_keys($ar2), $ar2 
); 

Для более «голого металла» (и, вероятно, более эффективный) решения, делать :

reset($ar); 
reset($ar2); 

while (list($key, $val) = each($ar)) { 
    list($key2, $val2) = each($ar2); 

    echo $key, ', ', $key2, '<br>'; 
    echo $val, ', ', $val2, '<br>'; 
} 
+1

Это хороший чистое решение! –

0

Это решение, если размер вашего обоих массивов не совпадает.
Он будет работать для того же размера слишком

$ar = array("az"=>"1","xy"=>"2"); 
    $ar2 = array("az2"=>"2","sa"=>4,"sds"=>5); 
    $arkeys = array_keys($ar); 
    $ar2keys=array_keys($ar2); 

    for($i=0;$i<max(sizeof($ar),sizeof($ar2));$i++) 
    { 
     if(sizeof($ar)>$i) 
     { 
      echo $arkeys[$i];//key 
      echo $ar[$arkeys[$i]];//value 
     } 
     if(sizeof($ar2)>$i) 
     { 
      echo $ar2keys[$i];//key 
      echo $ar2[$ar2keys[$i]];//value 
     } 

    } 
Смежные вопросы