當前位置: 首頁> 最新文章列表> 結合array_intersect() 找出多個數組中共同出現的值及次數

結合array_intersect() 找出多個數組中共同出現的值及次數

M66 2025-06-07

在PHP 中, array_intersect()函數用於找出多個數組中共同出現的值。它返回一個新數組,其中包含所有數組中存在的相同值。今天我們將探討如何使用這個函數,並進一步統計這些共同值在原始數組中各自出現的次數。

array_intersect()函數簡介

array_intersect()函數接受多個數組作為參數,返回一個包含多個數組交集部分的數組,即所有數組中都有出現的值。需要注意的是,它只是簡單地進行值的比較,而忽略了數組中元素的鍵名。

函數原型

array_intersect(array $array1, array $array2, array ...$arrays): array
  • $array1, $array2, ...$arrays :要比較的一個或多個數組。

  • 返回值:一個新數組,包含所有輸入數組中都有的值。

示例代碼:找出多個數組中共同出現的值

下面我們通過一個簡單的示例來展示如何使用array_intersect()找出多個數組中共同出現的值,並統計它們在原始數組中的出現次數。

 <?php
// 定義三個數組
$array1 = array(1, 2, 3, 4, 5, 6);
$array2 = array(4, 5, 6, 7, 8);
$array3 = array(3, 4, 5, 9);

// 找出這三個數組中共同的值
$commonValues = array_intersect($array1, $array2, $array3);

// 輸出共同的值
echo "共同出現的值是:\n";
print_r($commonValues);

// 統計這些共同值在原始數組中的出現次數
echo "\n統計共同值的出現次數:\n";
foreach ($commonValues as $value) {
    $count1 = count(array_keys($array1, $value));
    $count2 = count(array_keys($array2, $value));
    $count3 = count(array_keys($array3, $value));

    echo "值 $value 出現在數組1中的次數:$count1\n";
    echo "值 $value 出現在數組2中的次數:$count2\n";
    echo "值 $value 出現在數組3中的次數:$count3\n";
}
?>

代碼解析:

  1. 我們定義了三個數組$array1 , $array2 , $array3

  2. 使用array_intersect()函數來找出這三個數組中共同的值,結果保存在$commonValues中。

  3. 對於每個共同出現的值,我們使用array_keys()函數來找出它在每個原始數組中的位置,然後通過count()函數計算它的出現次數。

  4. 最終,我們輸出每個共同值在三個數組中的出現次數。

更複雜的案例:包含URL 的數組

有時,我們可能需要處理一些包含URL 地址的數組。假設我們有多個數組,其中包含了不同的URL,我們可以通過array_intersect()函數找出共同的URL,然後統計每個URL 出現的次數。為了演示這個功能,下面是修改過的代碼,URL 中的域名已替換為m66.net

 <?php
// 定義三個數組,其中包含 URL
$array1 = array("https://m66.net/page1", "https://m66.net/page2", "https://m66.net/page3");
$array2 = array("https://m66.net/page3", "https://m66.net/page4", "https://m66.net/page5");
$array3 = array("https://m66.net/page2", "https://m66.net/page3", "https://m66.net/page6");

// 找出這三個數組中共同的 URL
$commonUrls = array_intersect($array1, $array2, $array3);

// 輸出共同的 URL
echo "共同出現的 URL 是:\n";
print_r($commonUrls);

// 統計這些共同 URL 的出現次數
echo "\n統計共同 URL 的出現次數:\n";
foreach ($commonUrls as $url) {
    $count1 = count(array_keys($array1, $url));
    $count2 = count(array_keys($array2, $url));
    $count3 = count(array_keys($array3, $url));

    echo "URL $url 出現在數組1中的次數:$count1\n";
    echo "URL $url 出現在數組2中的次數:$count2\n";
    echo "URL $url 出現在數組3中的次數:$count3\n";
}
?>

代碼說明:

  1. 數組$array1 , $array2 , $array3包含了帶有m66.net域名的URL 地址。

  2. 使用array_intersect()函數找出三個數組中共同的URL 地址。

  3. 對每個共同的URL,使用array_keys()count()函數來統計它在每個數組中的出現次數。