2012-04-02 61 views
0

有沒有更好的方法來做這樣的事情?這很好,但我認爲有可能獲得相同結果的捷徑。我想增加更多的數組很容易,我可以把它變成一個函數,並有for循環外,但仍然。使用for和array_flip來模擬多個foreach。有沒有更好的辦法?

只是想知道。

<? 
$array1 = array("test1","test2","test3","test4"); 
$array2 = array("dest1","test2","dest3","dest4"); 




    for ($i=0; $i<count($array1); $i++) { //FOR STATEMENT TO GET MULTIPLE ARRAYS REGISTERED AS A FOREACH-STYLE 
    $val1 = $array1[$i]; //VALUES GET 
    $val2 = $array2[$i]; 

    $array1 = array_flip($array1); //ARRAY IS FLIPPED FROM KEY => VALUE TO VALUE => KEY SO THAT THE KEYS CAN BE GET. REMEMBER TO SWITCH IT BACK. 
    $array2 = array_flip($array2); 

    $key1 = $array1[$val1]; //NOW MUST ITERATE THROUGH USING VALUES ABOVE BECAUSE THE KEYS ARE NO LONGER NUMBERS. 
    $key2 = $array2[$val2]; 

    $array1 = array_flip($array1); //SWITCHING IT BACK. 
    $array2 = array_flip($array2); 

    echo $key1 . "=>" . $val1 . "<br />"; 
    echo $key2 . "=>" . $val2 . "<br />"; 

    } 




    var_dump($array1); 

    ?> 
+0

究竟是你想做些什麼?數組的鍵只是'$ i'。 – 2012-04-02 21:46:51

回答

1

您已經擁有陣列的「keys」,$i

for ($i=0; $i<count($array1); $i++) { 
    $val1 = $array1[$i]; // You're getting the value from the array, 
    $val2 = $array2[$i]; // you already have the key, $i 

    echo $i . "=>" . $val1 . "<br />"; 
    echo $i . "=>" . $val2 . "<br />"; 
} 

編輯:如果兩個數組有相同的鍵,你可以foreach超過一個,並從其他的價值。

foreach($array1 as $key=>$val1){ 
    $val2 = $array2[$key]; 

    echo $key . "=>" . $val1 . "<br />"; 
    echo $key . "=>" . $val2 . "<br />"; 
} 
+0

哦對了....其實我試圖用數組作爲關鍵字沒有數字。像(ID => Person)類型的東西...我完全忘記了數字不會因爲這個而工作,所以我必須使它成爲next()和current(),而不是通過$ i。 – user1159454 2012-04-02 21:54:53

+0

@ user1159454:這兩個陣列是否有相同的密鑰?如果是這樣,請嘗試我添加的第二個示例。 – 2012-04-02 21:59:15

1

我可以爲目前最好的

$arrayList = Array($array1, $array2); // Add every array here 
$keyArr = Array(); 
foreach ($arrayList as $key => $value) 
{ 
    // Put the keys of every array in $arrayList in an other array 
    $keyArr[$key] = array_keys($value); 
} 
// Loop while $i is lower than the highest index of the bigest array in $arrayList 
for ($i = 0; $i < count(max($arrayList)); $i++) 
{ 
    // Loop every array in $arrayList 
    foreach ($arrayList as $arrKey => $arr) 
    { 
    // If the array in $arrayList has at least $i element 
    if ($i < count($arr)) 
    { 

     // Get the key of the $i-n element in the array (take it from the $keyArr defined above) 
     $key = $keyArr[$arrKey][$i]; 
     // Get the value of the $i-n element in the array 
     $val = $arr[$key]; 
    } 
    } 
} 
+0

這似乎過於複雜。 – 2012-04-02 22:03:05

+0

我編輯它,這是我發現一次「foreach」很多數組而不操作鍵和循環每個數組的唯一方法。 – mamadrood 2012-04-02 22:06:02

相關問題