首頁 > 後端開發 > php教程 > 如何在 PHP 中同時有效率地循環多個數組?

如何在 PHP 中同時有效率地循環多個數組?

Patricia Arquette
發布: 2024-12-03 21:44:11
原創
323 人瀏覽過

How to Efficiently Loop Through Multiple Arrays Simultaneously in PHP?

如何同時循環兩個數組:詳細指南

問題:嵌套循環問題

同時循環多個數組時,常見的問題問題是由於不適當的循環結構,結果可能不正確。考慮以下範例:

$data1 = ['a: 1', 'a: 2', 'a: 3', 'a: 4', 'a: 5'];
$data2 = ['b: 1', 'b: 2', 'b: 3', 'b: 4', 'b: 5'];

foreach ($data1 as $item1) {
    foreach ($data2 as $item2) {
        echo $item1 . '<br/>';
        echo $item2 . '<br/>';
        echo '<br/><br/>';
    }
}
登入後複製

上面的程式碼使用巢狀的foreach 循環,這會產生以下輸出:

a: 1
b: 1

a: 1
b: 2

a: 1
b: 3

a: 1
b: 4

a: 1
b: 5
登入後複製

但是,預期輸出是:

a: 1
b: 1

a: 2
b: 2

a: 3
b: 3

a: 4
b: 4

a: 5
b: 5
登入後複製

問題是巢狀循環結構導致$data1 的每個元素都與$data2 的每個元素一起循環。為了達到想要的輸出,我們需要同時循環兩個陣列。

要同時循環多個數組,可以使用各種方法:

  1. array_map() 方法 (PHP >=5.3):

    此方法允許您傳遞多個陣列和一個回調函數來處理它們的元素。

    array_map(function($v1, $v2){
        echo $v1 . '<br>';
        echo $v2 . '<br>';
    }, $data1, $data2);
    登入後複製
  2. MultipleIterator 方法(PHP >=5.3):

    此方法建立可用於同時迭代多個陣列的多個迭代器對象。

    $it = new MultipleIterator();
    $it->attachIterator(new ArrayIterator($data1));
    $it->attachIterator(new ArrayIterator($data2));
    foreach ($it as $a) {
        echo $a[0] . '<br>';
        echo $a[1] . '<br>';
    }
    登入後複製
  3. for Loop with Counter (PHP >=4.3):

    此方法使用帶有計數器變數的for 迴圈來迭代數組。

    $keysOne = array_keys($data1);
    $keysTwo = array_keys($data2);
    
    $min = min(count($data1), count($data2));
    
    for ($i = 0; $i < $min; $i++) {
        echo $data1[$keysOne[$i]] . '<br>';
        echo $data2[$keysTwo[$i]] . '<br>';
    }
    登入後複製
  4. array_combine() 方法 (PHP >=5.0):

    如果數組有,可以使用此方法獨特的價值觀。它將數組組合成一個數組,其中 $data1 的元素是鍵,$data2 的元素是值。

    foreach (array_combine($data1, $data2) as $d1 => $d2) {
        echo $d1 . '<br>';
        echo $d2 . '<br>';
    }
    登入後複製
  5. call_user_func_array() 方法( PHP >=5.6):

    此方法允許您將多個數組傳遞給。

    $func = function (...$numbers) {
        foreach ($numbers as $v)
            echo $v . '<br>';
        echo '<br>';
    };
    call_user_func_array("array_map", [$func, $data1, $data2]);
    登入後複製

以上是如何在 PHP 中同時有效率地循環多個數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板