<?php
function check_unique() {
$seen = new ArrayObject();
return function ($value) use ($seen) {
if (in_array($value, (array)$seen)) {
return false;
}
$seen[] = $value;
return true;
};
}
const ITEMS = 1000;
$array = array_merge(range(1, ITEMS, 3), range(1, ITEMS, 2));
echo "started with ", count($array), " items\n";
$check_unique = check_unique();
$unique = [];
echo "memory usage ", memory_get_peak_usage(), "\n";
$time = -microtime(true);
foreach ($array as $value) {
if ($check_unique($value)) {
$unique[] = $value;
}
}
$time += microtime(true);
echo "memory usage ", memory_get_peak_usage(), "\n";
echo "took $time sec\n";
echo "finished with ", count($unique), " items\n";
preferences:
33.15 ms | 402 KiB | 5 Q