Q:

Erro ao mostrar o tempo passado de vários posts em PHP

<?php
function timeAgo($time_ago){
$cur_time   = time();
$time_elapsed   = $cur_time - $time_ago;
$seconds    = $time_elapsed ;
$minutes    = round($time_elapsed / 60 );
$hours      = round($time_elapsed / 3600);
$days       = round($time_elapsed / 86400 );
$weeks      = round($time_elapsed / 604800);
$months     = round($time_elapsed / 2600640 );
$years      = round($time_elapsed / 31207680 );
// Seconds
if($seconds <= 60){
    echo "$seconds segundos atrás";
}
//Minutes
else if($minutes <=60){
    if($minutes==1){
        echo "um minuto atrás";
    }
    else{
        echo "$minutes minutos atrás";
    }
}
//Hours
else if($hours <=24){
    if($hours==1){
        echo "uma hora atrás";
    }else{
        echo "$hours horas atrás";
    }
}
//Days
else if($days <= 7){
    if($days==1){
        echo "ontem";
    }else{
        echo "$days dias atrás";
    }
}
//Weeks
else if($weeks <= 4.3){
    if($weeks==1){
        echo "à uma semana";
    }else{
        echo "$weeks semanas atrás";
    }
}
//Months
else if($months <=12){
    if($months==1){
        echo "um mês atrás";
    }else{
        echo "$months meses atrás";
    }
}
//Years
else{
    if($years==1){
        echo "um ano atrás";
    }else{
        echo "$years anos atrás";
    }
}
}

?>
<?php
  $curenttime=$date_uploaded;
  $time_ago =strtotime($curenttime);
  echo timeAgo($time_ago);
?>

Sendo que $date_upload é igual a (dd-mm-aa hh:mm:ss) no banco de dados.
Esse é o código, quando eu puxo só um post ele funciona, mas quando puxo vários posts dá esse erro:

error: Cannot redeclare timeAgo() (previously declared in C:\xampp\htdocs\site\poster.php:520) in)

A:

O erro diz que existe duas ou mais vezes uma função com mesmo nome no seu arquivo ou na chamada de um include.
Para resolver o problema, sugiro que tenha pelo menos dois arquivos, um com o processamento normal do código e outro somente com funções um pequena biblioteca, dessa forma é evitada a colisão de nomes de função. Outra alternativa a partir do php5.3 é usar name espaces.
Existem algumas ferramentas que identificam duplicação de código e copy & paste como o php mess dectector, também a ajuda na identificação dessas colisões.
Exemplo - erro simulado.
Exemplo - solução com namespaces.

