<?php
function italico1(&$arr)
    {
        $cant = count($arr);    
    
        if ($cant==0)  return null;        
        $salida = null;
        
        if ($cant>1)
        {
            for ($i=0;$i<$cant-2;$i++)
                $salida .= $arr[$i].' ,';
        
            return $salida.$arr[$cant-2].' y '.$arr[$cant-1];  
            
        }else
            return $arr[0];      
    
    }
 
function italico2(&$arr)
{
    switch (count($arr))
    {
    case 0: return null;
    case 1: return $arr[0];
    default:    
        $ult = array_pop($arr);
        return implode (' ,',$arr).' y '.$ult;
    }    
} 
 
function alexis($array) {
    $string = implode(", ", $array);
    return substr_replace ($string, " y ", strrpos($string, ","), 2);
}
 
$a = range(1, 1000);
 
$ini2 = microtime(true) * 1000;
for ($i = 0; $i < 1000; $i++)
    alexis($a);
$fin2 = microtime(true) * 1000;
$tiempoAlexis = $fin2 - $ini2; 
 
$ini1 = microtime(true) * 1000;
for ($i = 0; $i < 1000; $i++)
    italico1($a);
$fin1 = microtime(true) * 1000;
$tiempoItalico1 = $fin1 - $ini1; 
 
$ini1 = microtime(true) * 1000;
for ($i = 0; $i < 1000; $i++)
    italico2($a);
$fin1 = microtime(true) * 1000;
$tiempoItalico2 = $fin1 - $ini1;
 
 
echo "Italico (script #1): " . $tiempoItalico1."\n";
echo "Italico (script #2): " . $tiempoItalico2."\n";
echo "Alexis: " . $tiempoAlexis;
 