Question : tri de la rangée par le groupe

bonjour, le

i AM essayant d'assortir un choix de rangées associatives, basé sur un du keys.

if que la valeur de la clef est un tri primitif et normal se produit - ceci travaille fine.

if la valeur de la clef est une rangée, je voudrais la faire assortir par code d'exemple du

some de « groupes " est peu de sorted_by_name de l'attached

the est très bien - mais pour le sorted_by_list, ce que je veux retourné est toute la rangée commandée comme suit : le

all ceux avec « 1 » (ou le plus bas si aucun n'a « 1 ») dans lui est valeur de liste d'abord, puis tout ces rester cela ont le prochain plus haut (« 2 »), etc.

so en ce moment, les retours pour le ressembler de sort_by_list à ceci :


d'Array
de => du

du

d'Array
de => du

du

du

Array
(0] => Array
de
[(=> [nommé] Array
de g
[liste] de => de
([0] => 1
) de
) 1] [(=> [nommé] Array
de f
[liste] de => de
([0] => 2
) de
) [2] (=> [nommé] Array
de b
[liste] de => de
([0] => 3
) de
) => Array
du

[5] du

) d'Array
de => du

du

) d'Array
de => de/> [3] (=> [nommé] Array
de h
[liste] de => de
(0] [1] => 2
) de => 1
de
[[4] (=> [nommé] Array
d'a
[liste] de => de
(0] [1] => 3
) de => 1
de
[(=> [nommé] Array
d'e
[liste] de => de
(0] => 2
de
[[1]


whereas du

du

d'Array
de => du

du

d'Array
de => du

du

du => 3
)) 6] [(=> [nommé] Array
de d
[liste] de => de
(0] [1] => 4
) de => 3
) de
[7] [(=> [nommé] Array
de c
[liste] de => de
(0] 1] => 4
de => 3
[3] de => 2
de => 1
de
[[[2]))) que je comme pour revenir : => Array
du

[2] du

) d'Array
de => du

du

) du


Array
(0] => Array
de
[(=> [nommé] Array
de g
[liste] de => de
([0] => 1
) de
1] [(=> [nommé] Array
de h
[liste] de => de
(0] [1] => 2
) de => 1
de
[(=> [nommé] Array
de c
[liste] de => de
(0] => 1
de
[                    [1] 2] 3] => Array
(
[nom] du

du

) d'Array
de => du

du

) d'Array
de => du

du

) du => 4
) du => 3
du => 2
[[3] [(=> [nommé] Array
d'a
[liste] de => de
(0] [1] => 3
) de => 1
de
[4] [(=> [nommé] Array
de f
[liste] de => de
([0] => 2
) de
5] [

)
du

d'Array
de => du

du

d'Array
de => du

du

d'Array
de => de l'e
[liste] de => (0] [1] => 3
) de => 2
) de
[[6] (=> [nommé] Array
de b
[liste] de => de
([0] => 3
) de
) [7] (=> [nommé] Array
de d
[liste] de => de
(0] [1] => 4
) de => 3
) de
[ class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
>< " de l'id= " codeSnippet945009 de
 de « liste » de => « de « nom » h », (1.2));
$data [] = rangée (rangée de => de « liste » de => « de « nom » g », (1)) ;
$data [] = rangée (rangée de => de « liste » de => « de « nom » a », (1.3));
$data [] = rangée (rangée de => de « liste » de => « de « nom » f », (2)) ;
$data [] = rangée (rangée de => de « liste » de => « de « nom » e », (2.3));
$data [] = rangée (rangée de => de « liste » de => « de « nom » b », (3)) ;
$data [] = rangée (rangée de => de « liste » de => « de « nom » c », (1.2.3.4));
$data [] = rangée (rangée de => de « liste » de => « de « nom » d », (3.4));

deep_sort de fonction ($array, $sorton) {
	
	usort ($array, fonction ($a, $b) utilisation ($sorton) {
	
		$a = $a [$sorton] ;
		$b = $b [$sorton] ;
		
		si (is_array ($a) && is_array ($b)) {
		
			// ce peu est évidemment défectueux - seulement inclus pour des buts d'illustration
			$a = implosent ('', $a) ;
			$b = implosent ('', $b) ;
			
		}
		
		retourner (== de $a $b) ? 0 : ($a > $b) ? 1 : -1 ;
	
	}) ;
	
	$array de retour ;

}

$sorted_by_name = deep_sort ($data, « nom ") ;

copie « 
 » ;

print_r ($sorted_by_name) ;

copie « 
 » ; $sorted_by_list = deep_sort ($data, « liste ") ; copie « 
 » ;

print_r ($sorted_by_list) ;

copie « 
 » ; ? >
class= de

Réponse : tri de la rangée par le groupe

Regarder ceci plus d'et voir s'il a du sens pour vous.  Le meilleur, ~Ray
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
";

// TEST DATA FROM THE POST AT EE
$data[] = array('name' => « h », rangée de => de « liste » (1.2));
$data [] = rangée (rangée de => de « liste » de => « de « nom » g », (1)) ;
$data [] = rangée (rangée de => de « liste » de => « de « nom » a », (1.3));
$data [] = rangée (rangée de => de « liste » de => « de « nom » f », (2)) ;
$data [] = rangée (rangée de => de « liste » de => « de « nom » e », (2.3));
$data [] = rangée (rangée de => de « liste » de => « de « nom » b », (3)) ;
$data [] = rangée (rangée de => de « liste » de => « de « nom » c », (1.2.3.4));
$data [] = rangée (rangée de => de « liste » de => « de « nom » d », (3.4));


// UNE FONCTION À COMPARER PAR NAMES
cmp_name de fonction ($a, $b)
{
    si == $b [« nom » (de $a [« nom »]]) retour 0 ;
    retourner ($a [« nom »] <> $arr)
{
    $test [$ptr] [« groupe »] = implosent ('', $arr [« liste »]) ;
    si (strlen ($test [$ptr] [« groupe »]) > $maxlen) $maxlen = strlen ($test [$ptr] [« groupe »]) ;
}

GARNITURE DE // LES GROUPES À À LONGUEUR CONFORMÉE
foreach ($test comme => $arr de $ptr)
{
    $test [$ptr] [« groupe »] = str_pad ($test [$ptr] [« groupe »], $maxlen+1, « 0 ») ;
}

SORTE DE // SUR DES GROUPES
usort ($test, « cmp_group ") ;

// ENLÈVENT LES GROUPES (SI NÉCESSAIRE)
foreach ($test comme => $arr de $ptr)
{
    supprimé ($test [$ptr] [« groupe »]) ;
}

EXPOSITION DE // LE PRODUIT DE TRAVAIL
var_dump ($test) ;
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us