Questione : fascicolazione dell'allineamento dal gruppo

ciao, il

i che prova a fascicolare un allineamento degli allineamenti associativi, basato su uno del keys.

if che il valore della chiave è una fascicolazione primitiva e normale accade - questo funziona fine.

if il valore della chiave è un allineamento, io vorrebbe farlo fascicolare dal codice di esempio del

some “dei gruppi " è punta del sorted_by_name del attached

the è benissimo - ma per il sorted_by_list, che cosa voglio rinviato è tutto l'allineamento ordinato come segue: il

all quelli con “1„ (o il più basso se nessun hanno “1„) in esso è il valore della lista in primo luogo, quindi tutto quel rimanere quello ha l'più alto seguente (“2„), etc.

so ora, i ritorni per l'assomigliare di sort_by_list a questo:


di Array
del => del

del

di Array
del => del

del

del

Array
(0] => Array
del
[(=> [nome] Array
del g
[lista] del => del
([0] => 1
) del
) 1] [(=> [nome] Array
del f
[lista] del => del
([0] => 2
) del
) [2] (=> [nome] Array
del b
[lista] del => del
([0] => 3
) del
) => Array
del

[5] del

) di Array
del => del

del

) di Array
del => di/> [3] (=> [nome] Array
del h
[lista] del => del
(0] [1] => 2
) del => 1
del
[[4] (=> [nome] Array
del a
[lista] del => del
(0] [1] => 3
) del => 1
del
[(=> [nome] Array
del e
[lista] del => del
(0] => 2
del
[[1]


whereas che del

del

di Array
del => del

del

di Array
del => del

del

del => 3
)) 6] [(=> [nome] Array
del d
[lista] del => del
(0] [1] => 4
) del => 3
) del
[7] [(=> [nome] Array
del c
[lista] del => del
(0] 1] => 4
del => 3
[3] del => 2
del => 1
del
[[[2]))) come per ottenere indietro: => Array
del

[2] del

) di Array
del => del

del

) del


Array
(0] => Array
del
[(=> [nome] Array
del g
[lista] del => del
([0] => 1
) del
1] [(=> [nome] Array
del h
[lista] del => del
(0] [1] => 2
) del => 1
del
[(=> [nome] Array
del c
[lista] del => del
(0] => 1
del
[                    [1] 2] 3] => Array
(
[nome] del

del

) di Array
del => del

del

) di Array
del => del

del

) del => 4
) del => 3
del => 2
[[3] [(=> [nome] Array
del a
[lista] del => del
(0] [1] => 3
) del => 1
del
[4] [(=> [nome] Array
del f
[lista] del => del
([0] => 2
) del
5] [

)
del

di Array
del => del

del

di Array
del => del

del

di Array
del => del e
[lista] del => (0] [1] => 3
) del => 2
) del
[[6] (=> [nome] Array
del b
[lista] del => del
([0] => 3
) del
) [7] (=> [nome] Array
del d
[lista] del => del
(0] [1] => 4
) del => 3
) del
[ class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
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:
>< notpretty " del class= " del id= " codeSnippet945009 del
 “della lista„„ del => ““di nome h„, (1.2));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome g„, (1));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome a„, (1.3));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome f„, (2));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome e„, (2.3));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome b„, (3));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome c„, (1.2.3.4));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome d„, (3.4));

deep_sort di funzione ($array, $sorton) {
	
	usort ($array, funzione ($a, $b) uso ($sorton) {
	
		$a = $a [$sorton];
		$b = $b [$sorton];
		
		se (&& is_array ($a) is_array ($b)) {
		
			// questa punta è ovviamente difettoso - incluso soltanto per gli scopi illustrativi
			$a = implode ('', $a);
			$b = implode ('', $b);
			
		}
		
		rinviare (== di $a $b)? 0: ($a > $b)? 1: -1;
	
	});
	
	$array di ritorno;

}

$sorted_by_name = deep_sort ($data, “nome ");

stampa “
„;

print_r ($sorted_by_name);

stampa “
„; $sorted_by_list = deep_sort ($data, “lista "); stampa “
„;

print_r ($sorted_by_list);

stampa “
„; ? >
class= del

Risposta : fascicolazione dell'allineamento dal gruppo

Osservare questo sopra e vedere se ha significato voi.  Il la cosa migliore, ~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„, allineamento del => “della lista„ (1.2));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome g„, (1));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome a„, (1.3));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome f„, (2));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome e„, (2.3));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome b„, (3));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome c„, (1.2.3.4));
$data [] = allineamento (allineamento del => “della lista„„ del => ““di nome d„, (3.4));


// UNA FUNZIONE DA CONFRONTARE DA NAMES
cmp_name di funzione ($a, $b)
{
    se (== $b [“nome„ di $a [“nome„]]) ritorno 0;
    rinviare ($a [“nome„] <> $arr)
{
    $test [$ptr] [“gruppo„] = implode ('', $arr [“lista„]);
    se (strlen ($test [$ptr] [“gruppo„]) > $maxlen) $maxlen = strlen ($test [$ptr] [“gruppo„]);
}

RILIEVO DI // I GRUPPI ALLA LUNGHEZZA COSTANTE
foreach ($test come => $arr di $ptr)
{
    $test [$ptr] [“gruppo„] = str_pad ($test [$ptr] [“gruppo„], $maxlen+1, “0„);
}

SPECIE DI // SUI GRUPPI
usort ($test, “cmp_group ");

// RIMUOVE I GRUPPI (SE NECESSARIO)
foreach ($test come => $arr di $ptr)
{
    unset ($test [$ptr] [“gruppo„]);
}

ESPOSIZIONE DI // IL PRODOTTO DEL LAVORO
var_dump ($test);
Altre soluzioni  
 
programming4us programming4us