function printTree($tree, $template){
$output='';
foreach($tree as $node){
$output .= str_replace(['%nodeName%', '%nodeParam1%'], [$node['nodeName'], $node['nodeParam1']]);
}
return $output;
}
echo printTree($tree, '<li class="%nodeParam1%">%nodeName%</li>');
echo printTree($tree, '<p class="%nodeParam1%">%nodeName%</p>');
echo printTree($tree, '<div class="%nodeParam1%">%nodeName%</div>');
ну естественно потому что без order by ему можно взять первые 15 записей, а order by взять все записи, отсортировать их и после этого взять 15. Как вы из массива возьмете 15 самых больших значений не просмотрев все значения массива?
больше интересно почему он индекс не использует.