Вопрос : сортировать блок группой

hi,

i am пытаясь сортировать блок ассоциативных блоков, основанный на одним из keys.

if, котор значение ключа примитивный, нормальный сортировать происходит - это работает fine.

if значением ключа будет блок, я хотел было бы иметь его быть сортированным Кодим примера

some «групп " будет бит sorted_by_name attached

the отлично - но для sorted_by_list, я хочу после того как я возвращен будет полностью приказанным блоком следующим образом:

all те с «1» (или самым низким если никакие имеют «1»), то в ем будет значением списка во-первых, после этого весь тот, котор оставать то имеет следующее самое высокое («2»), etc.

so справедливо теперь, возвращения для взгляда sort_by_list как это:


Array
=>



Array
=>





Array
(0] => Array

[(=> Array
g
=>
[названное] [списка] ([0] => 1
)
) [1] (=> Array
f
=>
[названное] [списка] ([0] => 2
)
) [2] (=> Array
b
=>
[названное] [списка] ([0] => 3
)
) => Array




Array
=>



Array
=>/> [3] (=> Array
h
=>
[названных] [списка] (=> 2
) => 1

[0] [1]) [4] (=> Array
a
=>
[названных] [списка] (=> 3
) => 1

[0] [1]) [5] (=> Array
e
=>
[названное] [списка] (0] => 2

[[1]


whereas, котор



Array
=>



Array
=>



=> 3
)) [6] (=> Array
d
=>
[названное] [списка] (=> 4
) => 3

[0] [1]) [7] (=> Array
c
=>
[названное] [списка] (=> 4
=> 3
=> 2
=> 1

[0] [1] [2] [3]))) я как получить назад: => Array




Array
=>






Array
(0] => Array

[(=> Array
g
=>
[названное] [списка] ([0] => 1
)
) [1] (=> Array
h
=>
[названное] [списка] (=> 2
) => 1

[0] [1]) [2] (=> Array
c
=>
[названное] [списка] (0] => 1

[                    [1] => Array




Array
=>



Array
=>



=> 4
=> 3
=> 2
[2] [3])) [3] (=> Array
a
=>
[названных] [списка] (=> 3
) => 1

[0] [1]) [4] (=> Array
f
=>
[названных] [списка] ([0] => 2
)
) 5] [(
[имя]

)

Array
=>



Array
=>



Array
=> e
=> [списка] (=> 3
) => 2

[0] [1]) [6] (=> Array
b
=>
[названное] [списка] ([0] => 3
)
) [7] (=> Array
d
=>
[названное] [списка] (=> 4
) => 3

[0] [1])
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
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:
>< " class= " id= " codeSnippet945009
 «списка»» => ««имени h», (1.2));
$data [] = блок (блок => «списка»» => ««имени g», (1));
$data [] = блок (блок => «списка»» => ««имени a», (1.3));
$data [] = блок (блок => «списка»» => ««имени f», (2));
$data [] = блок (блок => «списка»» => ««имени e», (2.3));
$data [] = блок (блок => «списка»» => ««имени b», (3));
$data [] = блок (блок => «списка»» => ««имени c», (1.2.3.4));
$data [] = блок (блок => «списка»» => ««имени d», (3.4));

deep_sort функции ($array, $sorton) {
	
	usort ($array, польза функции ($a, $b) ($sorton) {
	
		$a = $a [$sorton];
		$b = $b [$sorton];
		
		если (is_array && ($a) is_array, то ($b)){
		
			// этот бит очевидно треснуто - только после того как я включено для иллюстративных целей
			$a = взрывают ('', $a);
			$b = взрывают ('', $b);
			
		}
		
		возвращение (== $b $a)? 0: ($a > $b)? 1: -1;
	
	});
	
	возвращенное $array;

}

$sorted_by_name = deep_sort ($data, «имя ");

печать «
»;

print_r ($sorted_by_name);

печать «
»; $sorted_by_list = deep_sort ($data, «список "); печать «
»;

print_r ($sorted_by_list);

печать «
»; ? >
class=

Ответ : сортировать блок группой

Посмотрите это сверх и см. если оно делает чувство к вам.  Само лучше, ~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», блок => «списка» (1.2));
$data [] = блок (блок => «списка»» => ««имени g», (1));
$data [] = блок (блок => «списка»» => ««имени a», (1.3));
$data [] = блок (блок => «списка»» => ««имени f», (2));
$data [] = блок (блок => «списка»» => ««имени e», (2.3));
$data [] = блок (блок => «списка»» => ««имени b», (3));
$data [] = блок (блок => «списка»» => ««имени c», (1.2.3.4));
$data [] = блок (блок => «списка»» => ««имени d», (3.4));


// ФУНКЦИЯ, КОТОР БУДЕТ СРАВНИВАТЬ ИМЯ
cmp_name функции ($a, $b)
{
    если (== $b $a [«имени»] [«имя»]) возвращение 0;
    возвратите ($a [«имя»] <> $arr)
{
    $test [$ptr] [«группа»] = взрывают ('', $arr [«список»]);
    если (strlen ($test [$ptr] [«группа»]) > $maxlen) $maxlen = strlen, то ($test [$ptr] [«группа»]);
}

ПУСКОВАЯ ПЛОЩАДКА // ГРУППЫ К ПОСЛЕДОВАТЕЛЬНОЙ ДЛИНЕ
foreach ($test как => $arr $ptr)
{
    $test [$ptr] [«группа»] = str_pad ($test [$ptr] [«группа»], $maxlen+1, «0»);
}

ВИД // НА ГРУППАХ
usort ($test, «cmp_group ");

// ИЗВЛЕКАЕТ ГРУППЫ (ЕСЛИ НЕОБХОДИМО), ТО
foreach ($test как => $arr $ptr)
{
    unset ($test [$ptr] [«группа»]);
}

ВЫСТАВКА // ПРОДУКТ РАБОТЫ
var_dump ($test);
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us