在 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 '使用 array_unique() 函数执行时间:', $end_time - $start_time, ' 秒'; 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 '使用循环遍历执行时间:', $end_time - $start_time, ' 秒'; ?>
執行以上程式碼,可以得到如下輸出結果:
使用 array_unique() 函数执行时间:0.011376142501831 秒 使用循环遍历执行时间:15.46102309227 秒
我們可以看到,使用 array_unique() 函數的執行效率要高得多。
四、總結
在實際開發中,為了提高程式的執行效率,我們應盡量使用 PHP 提供的內建函數,而不是自己寫迴圈等程式碼處理。對於移除陣列中相同數字的問題,使用 PHP 內建的 array_unique() 函數是最簡單、最有效率的方法,而使用迴圈遍歷進行去重則會浪費大量的時間和資源。
以上是php 陣列怎麼清除相同數字的詳細內容。更多資訊請關注PHP中文網其他相關文章!