2015-01-06 1 views
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) 
{ 
    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'] и «Undefined индекс: descrizione_ente» .. Я не» t знать, как получить доступ к этим значениям в функции usort.usort по алфавиту массив

ideone ссылка.

+0

$ a и $ b являются элементами $ data_indice_enti. Вам не нужно ссылаться на $ data_indice_enti в вашей sort_alphabaly функции. – kainaw

ответ

1

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

(И если вы хотите, чтобы пойти его от А до Я просто изменить -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