Foros del Web » Programando para Internet » PHP »

Problemas con sort

Estas en el tema de Problemas con sort en el foro de PHP en Foros del Web. Hola a tod@s, tengo un problemilla a la hora de ordenar un array. El tema es que tengo un array de paises que contienen a ...
  #1 (permalink)  
Antiguo 10/08/2012, 05:38
 
Fecha de Ingreso: agosto-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Problemas con sort

Hola a tod@s,
tengo un problemilla a la hora de ordenar un array. El tema es que tengo un array de paises que contienen a su vez sus correspondientes ciudades tal que así:

$ciudades = array("Albania"=>array("Kukës","Burrel","Sarandë", ...),"Alemania"=>array("Bochum","Wuppertal","Biele feld",...

y necesito ordenar las ciudades pero al poner:

$cp = sort($ciudades[$pais]); //pais es el nombre del pais, logicamente, ejm Albania

Me da este warning:

Warning: sort() expects parameter 1 to be array, null given in /homepages/...

Y no me muestra nada.

Alguna idea de que puede ser?
Muchas gracias :)
  #2 (permalink)  
Antiguo 10/08/2012, 06:02
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 2 meses
Puntos: 139
Respuesta: Problemas con sort

Hola saltorum
El problema es que la variable $pais no esta definida, intenta dandole un valor antes de hacer el sort
Código PHP:
Ver original
  1. $pais = 'Albania';
  2. ......

Saludos!
  #3 (permalink)  
Antiguo 13/08/2012, 01:48
 
Fecha de Ingreso: agosto-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problemas con sort

Hola Gjx2, gracias por responder y perdon por tardar tanto en responder (el fin de semana jeje)

El tema es que $pais ya lo tengo definido ya que es una variable que viene de una función, osea, esto lo hago dentro de una función y $pais es uno de los parámetros que le paso a la función.

Un saludo
  #4 (permalink)  
Antiguo 13/08/2012, 02:40
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 6 meses
Puntos: 58
Respuesta: Problemas con sort

En PHP.net han puesto esta función para ordenar arrays multidimensionales:

Código PHP:
//$order has to be either asc or desc
 
function sortmulti ($array$index$order$natsort=FALSE$case_sensitive=FALSE) {
        if(
is_array($array) && count($array)>0) {
            foreach(
array_keys($array) as $key
            
$temp[$key]=$array[$key][$index];
            if(!
$natsort) {
                if (
$order=='asc')
                    
asort($temp);
                else    
                    
arsort($temp);
            }
            else 
            {
                if (
$case_sensitive===true)
                    
natsort($temp);
                else
                    
natcasesort($temp);
            if(
$order!='asc'
                
$temp=array_reverse($temp,TRUE);
            }
            foreach(
array_keys($temp) as $key
                if (
is_numeric($key))
                    
$sorted[]=$array[$key];
                else    
                    
$sorted[$key]=$array[$key];
            return 
$sorted;
        }
    return 
$sorted;

Espero que te sirva
  #5 (permalink)  
Antiguo 13/08/2012, 04:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problemas con sort

Gracias alyciashape por tu aportación, la verdad que habia visto esa función antes. El tema es que después de hacer un var_dump a la variable que he ordenado resulta que si tiene información y que está ordenada, entonces eso quiere decir que el problema está a la hora de mostrar los datos, que no se muy bien como hacerlo

Cita:
array(42) { [0]=> string(12) "Bajram Curri" [1]=> string(6) "Ballsh" [2]=> string(5) "Berat" [3]=> string(7) "Bilisht" [4]=> string(7) "Bulqizë" [5]=> string(6) "Burrel" [6]=> string(6) "Cërrik" [7]=> string(6) "Durrës" [8]=> string(7) "Elbasan" [9]=> string(6) "Ersekë" [10]=> string(4) "Fier" [11]=> string(11) "Fushë-Krujë" [12]=> string(11) "Gjirokastër" [13]=> string(6) "Gramsh" [14]=> string(5) "Kamëz" [15]=> string(6) "Kavajë" [16]=> string(5) "Korçë" [17]=> string(5) "Krujë" [18]=> string(5) "Kukës" [19]=> string(6) "Kuçovë" [20]=> string(3) "Laç" [21]=> string(5) "Lezhë" [22]=> string(15) "Librazhd-Qendër" [23]=> string(7) "Lushnjë" [24]=> string(8) "Mamurras" [25]=> string(11) "Patos Fshat" [26]=> string(5) "Peqin" [27]=> string(8) "Peshkopi" [28]=> string(7) "Poliçan" [29]=> string(4) "Pukë" [30]=> string(6) "Përmet" [31]=> string(8) "Roskovec" [32]=> string(10) "Rrogozhinë" [33]=> string(7) "Rrëshen" [34]=> string(7) "Sarandë" [35]=> string(8) "Selenicë" [36]=> string(6) "Shijak" [37]=> string(7) "Shkodër" [38]=> string(8) "Tepelenë" [39]=> string(6) "Tirana" [40]=> string(5) "Vlorë" [41]=> string(8) "Çorovodë" } array(2593) { [0]=> string(6) "Aachen" [1]=> string(5) "Aalen" [2]=> string(8) "Abenberg" [3]=> string(9) "Abensberg" [4]=> string(9) "Abtsgmünd" [5]=> string(6) "Achern" [6]=> ....
Esto es lo que me muestra el var_dump bastante resumido claro.
Estoy intentando mostrarlo asi:

Código PHP:
$cpp sort($cpo);

for(
$i=0;$i<count($cpp);$i++)
{
    echo 
"Ciudades ordenadas: ".$cpp[$i]."<br>";

Pero esto no me muestra nada "Ciudadades ordenadas: "

Alguna idea?

Un saludo

Etiquetas: sort
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:06.