PHP 如何找到陣列中不重複的那些元素

2021-10-08 22:28:38 字數 2074 閱讀 7517

一道php測試題,要求 找到陣列中不重複的那些元素,主要考察使用array_count_values()這個方法的,該方法是php自身提供的乙個計量某元素出現次數的乙個方法,用了該方法後效率確實提高不少

以下是一次演算法耗時以及占用記憶體的乙個統計情況

<?php

/** * 乙個簡單的php演算法題: 要求只獲取那些不重複的資料,要保證高效率 *

*/$input=[

1,1,

2,2,

5,5,

1,6,

2,3,

7,7,

9,9]

;for($i

=0;$i

<

100000;++

$i)/** * 自己寫方法統計每個元素出現的次數

* @param $input

* @return array

*/function

removerepeatmethod1

($input)++

$output[$v

];}else

}$result=[

];foreach

($output

as$k

=>$v)

}echo

"end use memory is:"

.memory_get_usage()

.'m ';

return

$result;}

/** * 用系統提供的統計元素出現次數的方法才是最高效的,array_count_values

* @param $input

* @return array

*/function

removerepeatmethod2

($input)}

echo

"end use memory is:"

.memory_get_usage()

.'';

return

$result;}

$begin

=microtime

(true);

$result

=removerepeatmethod1

($input);

echo

"spend time is:".(

microtime

(true)-

$begin).

's '

;echo

"use memory is:"

.memory_get_usage()

.'';

print_r

($result);

echo'';

$begin

=microtime

(true);

$result

=removerepeatmethod2

($input);

echo

"spend time is:".(

microtime

(true)-

$begin).

's '

;echo

"use memory is:"

.memory_get_usage()

.'';

print_r

($result

);

具體計算結果:

begin use memory is:4585200m

end use memory is:5175456m

spend time is:0.0068590641021729s

use memory is:4585576

array ( [0] => 9017 [1] => 5725 )

begin use memory is:4585576

end use memory is:5175832

spend time is:0.00092101097106934s

use memory is:4585576

array ( [0] => 9017 [1] => 5725 )

總結:如果能熟練使用php自身提供的方法,效率是有優勢的。

返回陣列中不重複的元素

這是實現結構偽類only of type的部分 var ret span span strong span b var norepeat function array else return set.replace g,split alert norepeat ret 最後返回b,strongvar...

php 找出資料中的不重複值

直接 展示 找出陣列中的不重複值 param array arr 一維陣列 param boolean falg 是否嚴格驗證 return array 返回不重複的值 function find arr unrepeat arr,falg false return data 找出特定值在陣列中的出...

PHP陣列內容不重複組合排列演算法

最近在做ecshop的商品庫存模組,分別給一款商品的多個屬性組合設定庫存,如下圖 一款手機有不同顏色,螢幕尺寸,系統和電量,都要設定不同的庫存,如果都要手動選擇屬性組合,則會耗費很多不必要的時間。假如開啟頁面時就已經設定好屬性排列組合那就最好不過,因此想了整天,寫了如下函式 1 2 author g...