首頁 >後端開發 >PHP問題 >php怎麼對兩個陣列的元素進行求和

php怎麼對兩個陣列的元素進行求和

PHPz
PHPz原創
2023-04-26 10:21:55760瀏覽

在 PHP 中,有時我們需要對兩個陣列的元素進行求和,而且這兩個陣列可能長度不一樣。本文將為大家介紹兩種方法來實現這個目標。

方法一:使用for 迴圈

這個方法利用for 迴圈逐一遍歷數組元素,將對應位置上的元素相加並儲存到新的陣列中,最後傳回這個新的數組。程式碼如下:

function sumArrays($arr1, $arr2) {
    $n1 = count($arr1);
    $n2 = count($arr2);

    $n = max($n1, $n2);
    $result = array();

    for ($i = 0; $i < $n; $i++) {
        $sum = 0;
        if ($i < $n1) {
            $sum += $arr1[$i];
        } 
        if ($i < $n2) {
            $sum += $arr2[$i];
        }
        array_push($result, $sum);
    }
    return $result;
}

這裡我們分別計算兩個陣列的長度 $n1$ 和 $n2$,然後取最大值 $n$,以此作為新陣列的長度。

接著,在for 迴圈中,我們先定義$sum$ 置為0,然後判斷目前索引$i$ 是否小於$n1$ 或$n2$,如果是,就將對應位置的元素加到$sum$ 中。最後將 $sum$ 儲存到新數組中,並傳回結果。

方法二:使用 array_map() 函數

這個方法使用 PHP 的 array_map() 函數和匿名函數。 array_map() 函數將對應兩個陣列的元素作為參數傳遞給匿名函數,然後將它們相加並傳回一個新的陣列。程式碼如下:

function sumArrays($arr1, $arr2) {
    $n1 = count($arr1);
    $n2 = count($arr2);

    $n = max($n1, $n2);
    $result = array_map(function($a, $b) {
        return $a + $b;
    }, array_pad($arr1, $n, 0), array_pad($arr2, $n, 0));
    
    return $result;
}

首先,我們使用 count() 函數計算兩個陣列的長度 $n1$ 和 $n2$,然後取最大值 $n$。

然後,我們使用 array_pad() 函數將兩個陣列填入相同的長度。如果其中一個陣列比另一個陣列長,我們就用 0 填滿它的空白部分。

接著,我們呼叫 array_map() 函數和匿名函數,以填入後的兩個陣列作為參數傳入。匿名函數將對應兩個元素相加並傳回結果。最後回傳 $result$。

這種方法看起來更簡潔一些,並且使用了內建函數,但在處理大型的陣列時可能比第一種方法更慢。

總結

本文介紹了兩種方法來對 PHP 中的兩個陣列元素進行求和。方法一使用了 for 循環,而方法二使用了 PHP 的內建函數 array_map()。兩種方法各有優劣,可以依照自己的需求選擇適合的方法。

以上是php怎麼對兩個陣列的元素進行求和的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn