Esa funcion:
sort($archivo_array[$i]);
en el bucle while() no corresponde ...
Se trata de ir "creando" tu array a base de lo que va leyendo el bucle while() que usas y sus funciones readir() y demás ... para que al terminar este (de generar tu array) apliques la función sort() o equivalente para ordenar el array ..
Esta función:
$archivo = str_replace("_", " ", $archivo);
deberías aplicarla en el mismo bucle while() que usas para obtener los nombres de los archivos de tu directorio indicado y que a su vez generas ese array ....
El código siguiente:
$sql = "UPDATE famosas SET fotos='$num' WHERE id_famosa='$seccion'";
$result = mysql_query($sql);
Que haces bajo tu bucle foreach() .. NO corresponde ahí .. estás ejecutando N veces la misma instrucción de "update" cuando ese dato es constante y lo obtienes ya más arriaba (en ese bucle while) a traves de ese contador que vas incrementando en dicho bucle .. Debes hacer ese "UPDATE" fuera del bucle foreach() . .justo fuera del } a la altura del echo "Hay ..... fotos ....".
El bucle foreach() .. tampoco es correcto:
foreach ($archivo_array[$i] as $archivo)
Tendría que ser:
Código PHP:
foreach ($archivo_array as $archivo){
echo "Nombre archivo: ". $archivo['archivo']."<br>";
echo "Fecha creacion: ". $archivo['fecha_creacion']."<br><br>";
}
Y .. el array "asociativo" bidimensional que generas .. ya te comenté que no se puede ordenar como un array normal con funciones como sort() sino que debes emplear array_multisort() .. también te comenté que hay soluciones por parte de los usuarios de dicha función en el manual oficial de PHP en
www.php.net/array_multisort para ordenar de forma cómoda un array de ese tipo por el "campo" que indiques.
Un saludo,