Es una interesante pregunta. No entendí muy bien si quieres que cada voto tenga un valor distinto a las visitas, o que "pesen" básicamente lo mismo... es decir, que el valor total de una web sea simplemente la suma de los dos valores.
En cualquier caso, y si no te he malinterpretado, creo que algo como esto podría aplicarse a tu problema:
Código:
<?php
// Estructura con la informacion de las "webs". Esta forma de disenyar
// la estructura el completamente arbitraria.
$datos = array (array ('nombre' => 'web1', 'visitas' => 3, 'votos' => 1),
array ('nombre' => 'web2', 'visitas' => 5, 'votos' => 2),
array ('nombre' => 'web3', 'visitas' => 2, 'votos' => 0),
array ('nombre' => 'web4', 'visitas' => 8, 'votos' => 8));
$cantidad = count ($datos); // Tamanyo del arreglo
// Ahora, para presentarlos en orden, se asume que el "valor" de cada
// web es dado simplemente por la suma de sus visitas y sus votos (es
// decir, la cantidad de visitas es igual de importante que el numero
// de votos).
$valores = array(); // Arreglo temporal
for ($i = 0; $i < $cantidad; $i++) {
// Se forma un arreglo temporal para crear una relacion entre cada
// web y su "valor de orden".
array_push ($valores, array ('indice' => $i,
'valor' => $datos[$i]['visitas'] +
$datos[$i]['votos']));
}
// Ahora se realiza un ordenamiento en el arreglo temporal,
// implementando una rutina propia con el proposito de no hacer mas
// manipulaciones con los tipos de datos.
// Algoritmo de ordenamiento por seleccion, orden decreciente.
for ($i = 0; $i < $cantidad - 1; $i++) {
$mayor = $i;
for ($j = $i + 1; $j < $cantidad; $j++)
if ($valores[$j]['valor'] > $valores[$i]['valor'])
$mayor = $j;
if ($mayor != $i) {
$aux = $valores[$i];
$valores[$i] = $valores[$mayor];
$valores[$mayor] = $aux;
}
}
// Finalmente... Mostrar los datos en orden.
for ($i = 0; $i < $cantidad; $i++) {
print $i + 1 . ". " . $datos[$valores[$i]['indice']]['nombre'] . " - " .
$datos[$valores[$i]['indice']]['votos'] . " votos, " .
$datos[$valores[$i]['indice']]['visitas'] . " visitas.\n<br />\n";
}
?>
Como verás, me inventé la estructura de tus datos, colocándolos en un arreglo de arreglos. Si los almacenas de otra manera (cosa bastante probable), podrías o bien retocar el código, o quizás agregar un paso previo en el que transformes tus datos a una estructura similar a la que usa este código. Espero que sea fácil de entender. :)