<?php
header('Content-Type: text/html; charset=utf-8');
ini_set('memory_limit','512M');
function func(array $words,$length){
if(count($words)%2==1)
$words[]='';
$words=array_values($words);
$results=array();
for($i=0,$j=count($words)-1;$i<$j;$i++,$j--){
foreach(array($i,$j) as $key)
if(strlen($words[$key])>=$length){
$str=substr($words[$key],0,$length);
$results[$str][]=$words[$key];
};
};
return array_map(function($vals){
return array_unique($vals);
},array_filter($results,function($vals){
return count($vals)>1;
}));
};
$array=array();
$i=1000000;
while($i--)
$array[]=mt_rand(0,mt_getrandmax());
$start=microtime(true);
$res=func($array,3);
echo 'Найдено ',count($res),' результатов за ',number_format(microtime(true)-$start,3,'.',' '),' сек.';
exit;