Сортировку всех элементов массива (array) многомерный
мне Нужно отсортировать массив ниже в алфавитном порядке с помощью числовой ключ:
Array
(
[AM] => Array
(
[1] => Array
(
[localidade] => Arena da Amazonia
[cidade] => MANAUS
[estado] => Amazonia
[acronym] => AM
)
[2] => Array
(
[localidade] => Ponto de Apoio
[cidade] => MANAUS
[estado] => Amazonia
[acronym] => AM
)
)
[BA] => Array
(
[4] => Array
(
[localidade] => Arena Fonte Nova
[cidade] => SALVADOR
[estado] => Bahia
[acronym] => BA
)
[3] => Array
(
[localidade] => Ponto de Apoio
[cidade] => SALVADOR
[estado] => Bahia
[acronym] => BA
)
)
[DF] => Array
(
[7] => Array
(
[localidade] => Estádio Mané Garrincha
[cidade] => BRASILIA
[estado] => Distrito Federal
[acronym] => DF
)
[8] => Array
(
[localidade] => Ponto de Apoio
[cidade] => BRASILIA
[estado] => Distrito Federal
[acronym] => DF
)
)
[MG] => Array
(
[10] => Array
(
[localidade] => Mineirão
[cidade] => BELO HORIZONTE
[estado] => Minas Gerais
[acronym] => MG
)
[9] => Array
(
[localidade] => Ponto de Apoio
[cidade] => BELO HORIZONTE
[estado] => Minas Gerais
[acronym] => MG
)
[6] => Array
(
[localidade] => Estádio Mané Garrincha
[cidade] => BRASILIA
[estado] => Belo Horizonte
[acronym] => MG
)
[5] => Array
(
[localidade] => Ponto de Apoio
[cidade] => CONFINS
[estado] => Belo Horizonte
[acronym] => MG
)
)
[RJ] => Array
(
[24] => Array
(
[localidade] => Ponto de Apoio
[cidade] => NITEROI
[estado] => Rio de Janeiro
[acronym] => RJ
)
[15] => Array
(
[localidade] => Ponto de Apoio
[cidade] => NOVA IGUACU
[estado] => Rio de Janeiro
[acronym] => RJ
)
[18] => Array
(
[localidade] => Barra - Centro de Golfe
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[19] => Array
(
[localidade] => Barra - Parque olimpico
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[21] => Array
(
[localidade] => Barra - Parque olimpico e Copacabana - Forte de Copacabana
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[17] => Array
(
[localidade] => Barra - Pontal
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[20] => Array
(
[localidade] => Barra - Rio Centro
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[28] => Array
(
[localidade] => Barra / Copacabana e Maracanã
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[12] => Array
(
[localidade] => Copacabana - Arena do Volei
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[11] => Array
(
[localidade] => Copacabana - Estadio da Lagoa
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[23] => Array
(
[localidade] => Copacabana - Forte de Copacabana
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[13] => Array
(
[localidade] => Copacabana - marina da Glória
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[25] => Array
(
[localidade] => Deodoro - Centro de Tiro / Estadio Olimpico / Centro Hoquei / Centro Aquatico / Arena da Juventude / Hipismo / Parque Radical
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[22] => Array
(
[localidade] => Maracana - Estádio Olimpico
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[26] => Array
(
[localidade] => Maracanã - Maracanazinho / Maracanã
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[16] => Array
(
[localidade] => Maracana - Maracanazinho/Maracana
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[27] => Array
(
[localidade] => Maracana - Sambodromo
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
[14] => Array
(
[localidade] => Ponto de Apoio
[cidade] => RIO DE JANEIRO
[estado] => Rio de Janeiro
[acronym] => RJ
)
)
[SP] => Array
(
[30] => Array
(
[localidade] => Ponto de Apoio
[cidade] => GUARULHOS
[estado] => São Paulo
[acronym] => SP
)
[29] => Array
(
[localidade] => Arena Corinthians
[cidade] => SAO PAULO
[estado] => São Paulo
[acronym] => SP
)
[31] => Array
(
[localidade] => Ponto de Apoio
[cidade] => SAO PAULO
[estado] => São Paulo
[acronym] => SP
)
)
)
результат должен быть примерно таким:
array (
'AM' => array (
1 => array (
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
'localidade' => 'Arena da Amazonia',
),
2 => array (
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
'localidade' => 'Ponto de Apoio',
),
),
'BA' => array (
3 => array (
'cidade' => 'SALVADOR',
'estado' => 'Bahia',
'acronym' => 'BA',
'localidade' => 'Ponto de Apoio',
),
4 => array (
'cidade' => 'SALVADOR',
'estado' => 'Bahia',
'acronym' => 'BA',
'localidade' => 'Arena Fonte Nova ',
),
),
'DF' => array (
5 => array (
'cidade' => 'BRASILIA',
'estado' => 'Belo Horizonte',
'acronym' => 'DF',
'localidade' => 'Estádio Mané Garrincha',
),
6 => array (
'cidade' => 'BRASILIA',
'estado' => 'Distrito Federal',
'acronym' => 'DF',
'localidade' => 'Estádio Mané Garrincha',
),
7 => array (
'cidade' => 'BRASILIA',
'estado' => 'Distrito Federal',
'acronym' => 'DF',
'localidade' => 'Ponto de Apoio',
),
),
'MG' => array (
8 => array (
'cidade' => 'CONFINS',
'estado' => 'Belo Horizonte',
'acronym' => 'MG',
'localidade' => 'Ponto de Apoio',
),
9 => array (
'cidade' => 'BELO HORIZONTE',
'estado' => 'Minas Gerais',
'acronym' => 'MG',
'localidade' => 'Ponto de Apoio',
),
10 => array (
'cidade' => 'BELO HORIZONTE',
'estado' => 'Minas Gerais',
'acronym' => 'MG',
'localidade' => 'Mineirão',
),
),
'RJ' => array (
11 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Copacabana - Estadio da Lagoa',
),
12 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Copacabana - Arena do Volei',
),
13 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Copacabana - marina da Glória',
),
14 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Ponto de Apoio',
),
15 => array (
'cidade' => 'NOVA IGUACU',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Ponto de Apoio',
),
16 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Maracana - Maracanazinho/Maracana',
),
17 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Barra - Pontal',
),
18 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Barra - Centro de Golfe',
),
19 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Barra - Parque olimpico',
),
20 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Barra - Rio Centro',
),
21 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Barra - Parque olimpico e Copacabana - Forte de Copacabana',
),
22 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Maracana - Estádio Olimpico',
),
23 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Copacabana - Forte de Copacabana',
),
24 => array (
'cidade' => 'NITEROI',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Ponto de Apoio',
),
25 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Deodoro - Centro de Tiro / Estadio Olimpico / Centro Hoquei / Centro Aquatico / Arena da Juventude / Hipismo / Parque Radical',
),
26 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Maracanã - Maracanazinho / Maracanã',
),
27 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Maracana - Sambodromo',
),
28 => array (
'cidade' => 'RIO DE JANEIRO',
'estado' => 'Rio de Janeiro',
'acronym' => 'RJ',
'localidade' => 'Barra / Copacabana e Maracanã',
),
),
'SP' => array (
29 =>
array (
'cidade' => 'SAO PAULO',
'estado' => 'São Paulo',
'acronym' => 'SP',
'localidade' => 'Arena Corinthians',
),
30 =>
array (
'cidade' => 'GUARULHOS',
'estado' => 'São Paulo',
'acronym' => 'SP',
'localidade' => 'Ponto de Apoio',
),
31 =>
array (
'cidade' => 'SAO PAULO',
'estado' => 'São Paulo',
'acronym' => 'SP',
'localidade' => 'Ponto de Apoio',
),
),
);
Пробовал эти методы, и ни один не работает:
public function arraySortByColumn(&$arr, $col, $dir = SORT_ASC)
{
$sort_col = array();
foreach ($arr as $key=> $row) {
$sort_col[$key] = $row[$col];
}
array_multisort($sort_col, $dir, $arr);
}
public function findMultiIfArray($array, $field, $value)
{
while(isset($array[key($array)])){
if(strpos($array[key($array)][$field], $value) !== false){
return key($array);
}
next($array);
}
return -1;
}
public function sortKeyLocality($a, $b)
{
if ($a['localidade'] == $b['localidade']) {
return 0;
}
return ($a['localidade'] < $b['localidade']) ? -1 : 1;
}
function arraySort($array, $on, $order=SORT_ASC){
$new_array = array();
$sortable_array = array();
if (count($array) > 0) {
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach ($v as $k2 => $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}
public function arraySortByColumnRecursive(&$arr, $col, $dir = SORT_ASC) {
$sort_col = array();
foreach ($arr as $key=> $row) {
if (is_array($row)) {
$sort_col[$key] = $row[$col];
$this->arraySortByColumnRecursive($row, $col, $dir);
}
}
array_multisort($sort_col, $dir, $arr);
}
, помогать другим людям, я буду размещать здесь метод, который я сделал, чтобы принести в списке этого
select optgroup
:
public function collectionLocais($collection)
{
$ufs = array("AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RO","RS","RR","SC","SE","SP","TO");
$ufs = array_values(array_map('current', $ufs));
foreach ($ufs as $uf) {
foreach($collection as $k => $local) {
if ($uf == $local['uf']) {
$new_collection[$uf][$local['id']] = array(
'localidade' => $local['locality'],
'cidade' => $local['city'],
'estado' => $local['state'],
'acronym' => $uf
);
}
}
}
return $new_collection;
}
2
Author: eightShirt, 2016-06-23
2 answers
, ksort:
Array проверено:
$array = array(
'AM' => array(
2 => array(
'localidade' => '1Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
1 => array(
'localidade' => '2Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
),
'BA' => array(
5 => array(
'localidade' => '3Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
3 => array(
'localidade' => '4Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
'4' => array(
'localidade' => '5Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
),
'DF' => array(
7 => array(
'localidade' => '6Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
'8' => array(
'localidade' => '7Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
6 => array(
'localidade' => '8Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
9 => array(
'localidade' => 'zzzz9 da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM',
),
),
);
Sort:
foreach($array as $key => $arr) {
ksort($arr);
$array[$key] = $arr;
}
ksort($array);
echo '<pre>', print_r($array), '</pre>';
2
Author: Miguel, 2016-06-24 20:55:06
"комментарии" был процитирован метод asort(), но он сортирует по значению, в вашем случае, как сортировка сделана по ключ, то вы должны использовать ksort(), который имеет ту же цель, но сортирует ключи, будет выглядеть следующим образом:
<?php
// array
$data =
array
(
'BA' => array
(
4 => array
(
'localidade' => 'Arena Fonte Nova',
'cidade' => 'SALVADOR',
'estado' => 'Bahia',
'acronym' => 'BA'
),
3 => array
(
'localidade' => 'Ponto de Apoio',
'cidade' => 'SALVADOR',
'estado' => 'Bahia',
'acronym' => 'BA',
)
),
'AM' => array
(
2 => array
(
'localidade' => 'Arena da Amazonia',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM'
),
1 => array
(
'localidade' => 'Ponto de Apoio',
'cidade' => 'MANAUS',
'estado' => 'Amazonia',
'acronym' => 'AM'
)
)
);
// resultado será o array normal
var_dump($data);
ksort($data);
foreach($data as $key => $value)
{
ksort($data[$key]);
}
var_dump($data);
Выход массива, упорядоченного, будет: "
array (size=2)
'AM' =>
array (size=2)
1 =>
array (size=4)
'localidade' => string 'Ponto de Apoio' (length=14)
'cidade' => string 'MANAUS' (length=6)
'estado' => string 'Amazonia' (length=8)
'acronym' => string 'AM' (length=2)
2 =>
array (size=4)
'localidade' => string 'Arena da Amazonia' (length=17)
'cidade' => string 'MANAUS' (length=6)
'estado' => string 'Amazonia' (length=8)
'acronym' => string 'AM' (length=2)
'BA' =>
array (size=2)
3 =>
array (size=4)
'localidade' => string 'Ponto de Apoio' (length=14)
'cidade' => string 'SALVADOR' (length=8)
'estado' => string 'Bahia' (length=5)
'acronym' => string 'BA' (length=2)
4 =>
array (size=4)
'localidade' => string 'Arena Fonte Nova' (length=16)
'cidade' => string 'SALVADOR' (length=8)
'estado' => string 'Bahia' (length=5)
'acronym' => string 'BA' (length=2)
См.: , Упорядочивая массив в документации PHP, чтобы увидеть таблицу методов сортировки и их функции.
0
Author: Leonardo, 2016-06-23 17:56:25