首頁 > 後端開發 > PHP問題 > php 陣列怎麼清除相同數字

php 陣列怎麼清除相同數字

PHPz
發布: 2023-04-27 10:31:10
原創
485 人瀏覽過

在 PHP 中,我們常常需要對陣列進行各種操作,例如尋找、排序,以及去重。其中去重操作就是清除陣列中重複的元素。在實際開發過程中,我們經常會遇到需要清除相同數字的情況,本文介紹如何使用 PHP 陣列去除重複數字。

一、array_unique() 函數

PHP 中有一個 array_unique() 函數,該函數可以用來移除陣列中的重複值,並傳回一個新的陣列。此函數使用的是值比較,即只有值相等的元素才被認為是重複的。

下面是使用array_unique() 函數去重的範例程式碼:

<?php
//定义一个包含相同数字的数组
$array = array(1, 1, 2, 3, 4, 4, 5, 5, 5);

//去重
$new_array = array_unique($array);

//输出去重后的数组
print_r($new_array);
?>
登入後複製

執行以上程式碼,可以得到輸出結果:

Array
(
    [0] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [6] => 5
)
登入後複製

我們可以看到,重複的數字已經被清除,只剩下了不同的數字。

二、使用迴圈遍歷去重

除了使用 array_unique() 函數,我們還可以使用迴圈遍歷的方法去重。具體實作如下:

<?php
//定义一个包含相同数字的数组
$array = array(1, 1, 2, 3, 4, 4, 5, 5, 5);

//去重
$new_array = array();
foreach ($array as $value) {
    if (!in_array($value, $new_array)) {
        $new_array[] = $value;
    }
}

//输出去重后的数组
print_r($new_array);
?>
登入後複製

以上程式碼中,我們使用了一個空數組 $new_array 儲存不重複的數字。然後使用 foreach 循環遍歷原始數組 $array,如果當前元素不在 $new_array 中,則將當前元素加入 $new_array 數組中。

執行上述程式碼後,可以得到與前面相同的輸出結果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
登入後複製

三、效能比較

上面提到了兩種方法去重,那麼它們的效能如何呢?我們來比較一下。

為了比較兩種方法的效能,我們定義了一個包含 100,000 個隨機數的數組,然後使用兩種方法分別對它進行去重,並統計執行時間。程式碼如下:

<?php
//1. 使用 array_unique() 函数
$array = array();
for ($i = 0; $i < 100000; $i++) {
    $array[] = rand(1, 100000);
}
$start_time = microtime(true);
$new_array = array_unique($array);
$end_time = microtime(true);
echo &#39;使用 array_unique() 函数执行时间:&#39;, $end_time - $start_time, &#39; 秒&#39;;

echo "\n";

//2. 使用循环遍历
$array = array();
for ($i = 0; $i < 100000; $i++) {
    $array[] = rand(1, 100000);
}
$start_time = microtime(true);
$new_array = array();
foreach ($array as $value) {
    if (!in_array($value, $new_array)) {
        $new_array[] = $value;
    }
}
$end_time = microtime(true);
echo &#39;使用循环遍历执行时间:&#39;, $end_time - $start_time, &#39; 秒&#39;;
?>
登入後複製

執行以上程式碼,可以得到如下輸出結果:

使用 array_unique() 函数执行时间:0.011376142501831 秒
使用循环遍历执行时间:15.46102309227 秒
登入後複製

我們可以看到,使用 array_unique() 函數的執行效率要高得多。

四、總結

在實際開發中,為了提高程式的執行效率,我們應盡量使用 PHP 提供的內建函數,而不是自己寫迴圈等程式碼處理。對於移除陣列中相同數字的問題,使用 PHP 內建的 array_unique() 函數是最簡單、最有效率的方法,而使用迴圈遍歷進行去重則會浪費大量的時間和資源。

以上是php 陣列怎麼清除相同數字的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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