Lo hare suponiendo que el array puntos() es el array donde se acumulan los puntos que tienen actualmente cada equipo, y que es un array asociativo.
Primero de todo tienes que ordenar el array de los puntos de mayor a menor, teniendo asi que el equipo de mayor puntuación queda en la primera posición del array. Para ello usa:
arsort($puntos);
Ahora ya tenemos ordenados los equipo por puntuación, pero pueden haber equipos con puntuaciones iguales, así que hemos de ver la diferencia de goles. Para ello mejor creamos funciones para ayudar a entender el código.
Código PHP:
arsort($puntos);
$auxNombre='';
$auxPts=0;
foreach($puntos as $k => $v){
echo $v;
compararPts($k, $auxNombre);
$auxNombre=$k;
$auxPts=$v;
}
function compararPts($equipo1, $equipo2){
global $puntos;
if($puntos[$equipo1]==$puntos[$equipo1]){
compararGoles($equipo1, $equipo2);
}
}
function compararGoles($equipo1, $equipo2){
global $puntos;
//aqui haces la conexion a tu BD para ver la diferencia de goles entre estos equipos.
if($diferencia_goles<0){//esto significa que el equipo1 pierde por diferencia de goles sobre el equipo2
//aqui intercambias las posiciones de los 2 equipos dentro de array puntos, pero esta parte no se como hacerla! xD
}
}
Informate sobre como intercambiar posiciones en los arrays asociativos.