Sort di un array da ordinamento fisso

php.master

Nuovo Utente
21 Set 2012
6
0
0
Buongiorno a tutti,

non riesco a trovare un tutorial o esempio che mi dia la possibilità di costruire una funzione in php tale per cui riordino un array dato un altro array.

In pratica il seguente array:

Array ( [0] => Array ( [0] => L ) [1] => Array ( [0] => M ) [2] => Array ( [0] => S ) [3] => Array ( [0] => XL ) [4] => Array ( [0] => XS ) [5] => Array ( [0] => XXL ) )

multidimensionale aihmé contiene delle taglie di abbigliamento, devo ordinarle secondo questo array:

$my_order = array( 'XXXS', 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL', );

Ammetto che gli array sono un po' troppo ostici per me. Quindi ogni aiuto è ben accettato.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
ne sparo una delle mie
PHP:
<?php

$array = array(
    0 => array(
        0 => "L"),
    1 => array(
        0 => "M"),
    2 => array(
        0 => "S"),
    3 => array(
        0 => "XL"),
    4 => array(
        0 => "XS"),
    5 => array(
        0 => "XXL")
);
var_dump($array);
$my_order = array('XXXS', 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL',);

$array_ordinato = array();
foreach ($array as $value) {
    foreach ($my_order as $key => $val) {
        if ($value[0] == $val) {
            $array_ordinato[$key] = $val;
        }
    }
}

ksort($array_ordinato);
var_dump($array_ordinato);
?>
Non ci ho ragionato molto , probabilmente c'è un metodo migliore
 

php.master

Nuovo Utente
21 Set 2012
6
0
0
Ecco cosa mi fregava, il doppio ciclo foreach. Di fatto non riuscivo ad andare in profondità nell'array.

foreach ($array as $value) {
foreach ($my_order as $key => $val) {
if ($value[0] == $val) {
$array_ordinato[$key] = $val;
}
}
}
Mi hai dato una buona base su cui lavorare. Grazie mille. Ti faccio sapere come è andata.
 

php.master

Nuovo Utente
21 Set 2012
6
0
0
Alla fine della fiera sono dovuto andare ancora più in profondità, perché nell'esempio tuo cricic perdevo una dimensione dell'array ed il programma ne ha bisogno di due.
PHP:
//
	$size_order = array( array ("XXXS"),array ("XS"),array ("S"),array ("M"),array ("L"),array ("XL"),array ("XXL"),array ("XXXL"));
	
	$array_ordinato = array();
		 
	foreach ($sorted_array as $chiave => $value ) {
		foreach ($value as $size ) {
    		foreach ($size_order as $key => $val) {
				foreach ($val as $my_size) {
	  				if ($my_size == $size) {
            			$array_ordinato[$key] = $val;
					}	
				}
			}
    	}
	} 

	ksort($array_ordinato);

        var_dump($array_ordinato);

	$sorted_array = $array_ordinato;

//
Comunque sei stato fondamentale. Grazie!
 
Ultima modifica di un moderatore: