2010-11-02 13 views
26

Tengo una matriz PHP como:matriz de cadenas ordenación numérica en php

myarr[1] = "1", 
myarr[2] = "1.233", 
myarr[3] = "0", 
myarr[4] = "2.5" 

los valores son en realidad las cadenas, pero quiero que este array a ordenar numéricamente, también teniendo en cuenta valores de coma flotante y el mantenimiento de la asociación de índices.

Por favor, ayúdenme. Gracias

+0

Puño de de, es normal que se establece dos veces el índice 1? –

Respuesta

49

Puede utilizar la función normal sort. Se necesita un segundo parámetro para indicar cómo desea clasificarlo. Elija SORT_NUMERIC.

Ejemplo:

sort($myarr, SORT_NUMERIC); 
    print_r($myarr); 

grabados

Array 
(
    [0] => 0 
    [1] => 1 
    [2] => 1.233 
    [3] => 2.5 
) 

Actualizar: Para el mantenimiento de pares de valores clave, utilizar asort (toma los mismos argumentos), ejemplo de salida:

Array 
(
    [3] => 0 
    [1] => 1 
    [2] => 1.233 
    [4] => 2.5 
) 
+0

nice one @Felix – Adnan

1

Utilice la función php usort y en su función de devolución de llamada convierta sus cadenas en flotadores para compararlas.

0

Usted puede convertir sus cadenas en números reales (flotadores) y ordenarlos después:

foreach ($yourArray as $key => $value) { 
    $yourArray[$key] = floatval($value); 
} 

sort($yourArray, SORT_NUMERIC); 
9

Use natsort()

$myarr[1] = "1"; 
$myarr[2] = "1.233"; 
$myarr[3] = "0"; 
$myarr[4] = "2.5"; 

natsort($myarr); 
print_r($myarr); 

Salida:

Array ([2] => 0 [0] => 1 [1] => 1.233 [3] => 2.5) 
Cuestiones relacionadas