So che ci sono natsort() e le funzioni natcasesort() in php mettere ordine elementi dell'array nell'ordine naturale. Sto cercando di ordinare i seguenti elementi.ordina un array php alfanumerico
array[0]= '10. xyz';
array[1]= '13. xyz';
array[2]= '2. xyz';
array[3]= '1a. xyz';
array[4]= '6. xyz';
array[5]= '1b. xyz';
array[6]= '4a. xyz';
array[7]= '4b. xyz';
ora se applico natsort(), '10 .. 'e '13 ..' sono posti al di sopra '1 bis ..'. come posso fare in modo che il mio codice php pensi che '10 .. 'sia maggiore di' 1a ... 'e' 1a ... 'dovrebbe essere in cima? l'uscita corretta nel mio caso particolare, è:
'1a. xyz';
'1b. xyz';
'2. xyz';
'4a. xyz';
'4b. xyz';
'6. xyz';
'10. xyz';
'13. xyz';
ho usato un algo personalizzato, ma fa lo stesso ... essa pone '10 ..' prima '1 bis ...'. heres il mio func personalizzato:
function cmp($a, $b) {
$a_ex=explode(".",$a);
$b_ex=explode(".",$b);
if ($a_ex[0] == $b_ex[0]) {
return 0;
}
return ($a_ex[0] < $b_ex[0]) ? -1 : 1;
}
solo usort ..... – idm
Come altri hanno scritto, 'natsort()' funziona per me. Quale versione di PHP stai usando? – Hammerite