усортировать по алфавиту массив

<?php
$indice_enti = '[{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Torino","data_ingresso_siope":"2007-01-01T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"001","descrizione_regione":"PIEMONTE","numero_abitanti":2669,"descrizione_ente":"COMUNE DI AGLIE\'","descrizione_ente_not_stemmed":"COMUNE DI AGLIE\'","codice_regione":"01","codice_fiscale":"83501790014     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"011142764","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649331752960},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Novara","data_ingresso_siope":"2007-01-01T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"003","descrizione_regione":"PIEMONTE","numero_abitanti":1556,"descrizione_ente":"COMUNE DI BAGRATE CONTURBIA","descrizione_ente_not_stemmed":"COMUNE DI AGRATE CONTURBIA","codice_regione":"01","codice_fiscale":"00471090035     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"011120674","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649334898688},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Cuneo","data_ingresso_siope":"2007-01-01T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"004","descrizione_regione":"PIEMONTE","numero_abitanti":173,"descrizione_ente":"COMUNE DI ZACCEGLIO","descrizione_ente_not_stemmed":"COMUNE DI ZACCEGLIO","codice_regione":"01","codice_fiscale":"00481380046     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"011120809","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649334898689},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Asti","data_ingresso_siope":"2007-01-04T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"005","descrizione_regione":"PIEMONTE","numero_abitanti":1686,"descrizione_ente":"COMUNE DI AGLIANO","descrizione_ente_not_stemmed":"COMUNE DI AGLIANO","codice_regione":"01","codice_fiscale":"82000250058     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"000720006","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649334898690},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Alessandria","data_ingresso_siope":"2006-01-02T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"006","descrizione_regione":"PIEMONTE","numero_abitanti":20238,"descrizione_ente":"COMUNE DI ACQUI TERME","descrizione_ente_not_stemmed":"COMUNE DI ACQUI TERME","codice_regione":"01","codice_fiscale":"00430560060     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"010697333","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649335947264}]';
$data_indice_enti = json_decode($indice_enti, true);

function sort_alphabetically($a, $b)
{
global $data_indice_enti;
if ($a->$data_indice_enti['descrizione_ente'] > $b->$data_indice_enti['descrizione_ente']) {
return -1;
} else if ($a->$data_indice_enti['descrizione_ente'] < $b->$data_indice_enti['descrizione_ente']) {
return 1;
} else {
return 0;
}
}

usort($data_indice_enti, 'sort_alphabetically');

foreach ($data_indice_enti as $ente) {
$codice_comparto    = $ente['codice_comparto'];
$codice_ente        = $ente['codice_ente'];
$descrizione_ente   = $ente['descrizione_ente'];
echo '<option value="'. $codice_comparto .' - '. $codice_ente .'">'. $descrizione_ente. '</option>';
}
?>

Я тут что то не так делаю … понимаюПопытка получить свойство необъекта» за $data_indice_enti['descrizione_ente'] а также «Неопределенный индекс: descrizione_ente«.. Я не знаю, как получить доступ к этим значениям в usort функция.

ideone ссылка на сайт.

1

Решение

Это должно работать для вас:

(И если вы хотите перейти с A-Z, просто измените -1 а также 1)

<?php$indice_enti = '[{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Torino","data_ingresso_siope":"2007-01-01T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"001","descrizione_regione":"PIEMONTE","numero_abitanti":2669,"descrizione_ente":"COMUNE DI AGLIE\'","descrizione_ente_not_stemmed":"COMUNE DI AGLIE\'","codice_regione":"01","codice_fiscale":"83501790014     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"011142764","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649331752960},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Novara","data_ingresso_siope":"2007-01-01T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"003","descrizione_regione":"PIEMONTE","numero_abitanti":1556,"descrizione_ente":"COMUNE DI BAGRATE CONTURBIA","descrizione_ente_not_stemmed":"COMUNE DI AGRATE CONTURBIA","codice_regione":"01","codice_fiscale":"00471090035     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"011120674","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649334898688},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Cuneo","data_ingresso_siope":"2007-01-01T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"004","descrizione_regione":"PIEMONTE","numero_abitanti":173,"descrizione_ente":"COMUNE DI ZACCEGLIO","descrizione_ente_not_stemmed":"COMUNE DI ZACCEGLIO","codice_regione":"01","codice_fiscale":"00481380046     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"011120809","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649334898689},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Asti","data_ingresso_siope":"2007-01-04T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"005","descrizione_regione":"PIEMONTE","numero_abitanti":1686,"descrizione_ente":"COMUNE DI AGLIANO","descrizione_ente_not_stemmed":"COMUNE DI AGLIANO","codice_regione":"01","codice_fiscale":"82000250058     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"000720006","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649334898690},{"ripartizione_geografica":"ITALIA NORD-OCCIDENTALE","descrizione_provincia":"Alessandria","data_ingresso_siope":"2006-01-02T00:00:00Z","codice_sottocomparto":"COMUNE","codice_provincia":"006","descrizione_regione":"PIEMONTE","numero_abitanti":20238,"descrizione_ente":"COMUNE DI ACQUI TERME","descrizione_ente_not_stemmed":"COMUNE DI ACQUI TERME","codice_regione":"01","codice_fiscale":"00430560060     ","codice_comparto":"PRO","codice_comune":"001","codice_ente":"010697333","data_uscita_siope":"9999-12-31T23:59:00Z","_version_":1488188649335947264}]';
$data_indice_enti = json_decode($indice_enti, true);function sort_alphabetically($a, $b) {

if ($a['descrizione_ente'] > $b['descrizione_ente']) {
//^Removed object access to a array
return -1;
} else if ($a['descrizione_ente'] < $b['descrizione_ente']) {
return 1;
} else {
return 0;
}
}

usort($data_indice_enti, 'sort_alphabetically');

foreach ($data_indice_enti as $ente) {
$codice_comparto    = $ente['codice_comparto'];
$codice_ente        = $ente['codice_ente'];
$descrizione_ente   = $ente['descrizione_ente'];
echo '<option value="'. $codice_comparto .' - '. $codice_ente .'">'. $descrizione_ente. '</option>';
}

?>

Выход:

COMUNE DI ZACCEGLIO
COMUNE DI BAGRATE CONTURBIA
COMUNE DI AGLIE'
COMUNE DI AGLIANO
COMUNE DI ACQUI TERME

И для получения дополнительной информации о usort() увидеть: http://php.net/manual/en/function.usort.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]