Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-02-2014, 20:39   #1
stefano861
Member
 
Iscritto dal: Nov 2013
Messaggi: 62
[PHP] Ordinare array multidimensionale associativo

Ciao a tutti, ho un array multidimensionale come questo:

array $friends:
Codice:
Array ( 
	[0] => User Object ( 
				[id:User:private] => 6 
				[username:User:private] => amy
				[password:User:private] => fa7f8ff03a1b3d214913bbce87b4b1a1a95cbf79 
				[email:User:private] => [email protected] 
				[first_name:User:private] => Amy
				[last_name:User:private] => Ross 
				[city:User:private] => Los Angeles 
				[gender:User:private] => F 
				[date:User:private] => 01/01/2000 
		) 
	[1] => User Object ( 
				[id:User:private] => 12 
				[username:User:private] => antony 
				[password:User:private] => 1799296195846afeef14df836a5db11994803780 
				[email:User:private] => [email protected] 
				[first_name:User:private] => Antony 
				[last_name:User:private] => Hevia 
				[city:User:private] => New York 
				[gender:User:private] => M 
				[date:User:private] => 01/01/2003 
		) 
	[2] => User Object ( 
				[id:User:private] => 17 
				[username:User:private] => janis 
				[password:User:private] => e74f86fd784cbedb3cf1e4e1f685a12470fff7bc 
				[email:User:private] => [email protected] 
				[first_name:User:private] => Janis 
				[last_name:User:private] => Jane 
				[city:User:private] => // 
				[gender:User:private] => F 
				[date:User:private] => ../../.... 
		) 
	[3] => User Object ( 
				[id:User:private] => 19 
				[username:User:private] => alex 
				[password:User:private] => e74f86fd784cbedb3cf1e4e1fa5db11994803780 
				[email:User:private] => [email protected] 
				[first_name:User:private] => Alex 
				[last_name:User:private] => Smith
				[city:User:private] => // 
				[gender:User:private] => F 
				[date:User:private] => ../../.... 
		) 		
}
Voglio ordinare l'array secondo il campo username e first_name.

Ho provato così:

Codice:
$this->sort($this->friends, array('username', 'first_name'));

public function sort($array, $cols) { 
   $colarr = array(); 
   foreach($cols as $col => $order) { 
       $colarr[$col] = array(); 
       foreach($array as $k => $row) { 
          $colarr[$col]['_'.$k] = strtolower($row[$col]);  -->line 112
       } 
   } 
   $eval = 'array_multisort('; 
   foreach($cols as $col => $order) { 
       $eval .= '$colarr[\''.$col.'\'],'.$order.','; 
   } 
   $eval = substr($eval,0,-1).');'; 
   eval($eval); 
   $ret = array(); 
   foreach($colarr as $col => $arr) { 
       foreach($arr as $k => $v) { 
           $k = substr($k,1); 
           if(!isset($ret[$k])) 
              $ret[$k] = $array[$k]; 
           $ret[$k][$col] = $array[$k][$col]; 
       } 
   } 
   return $ret; 
}
Ma genera il seguente errore:

Fatal error: Cannot use object of type User as array in ... on line 112

Come posso risolvere?

Altrimento ho pensato di ordinare l'array al momento della celect al database.
Questa è la mia query:
Codice:
$stmt = $db->prepare("SELECT * "
                . "FROM `users` "
                . "INNER JOIN `friend` ON (`username` = `user_req`) "
                . "WHERE (`user_acc` = ? AND `status` = '1') "
                . "UNION DISTINCT "
                . "SELECT * "
                . "FROM `users` "
                . "INNER JOIN `friend` ON (`username` = `user_acc`) "
                . "WHERE (`user_req` = ? AND `status` = '1')");
Se aggiungo un ORDER BY, in questo modo, in funziona più...
Codice:
$stmt = $db->prepare("(SELECT * "
                . "FROM `users` "
                . "INNER JOIN `friend` ON (`username` = `user_req`) "
                . "WHERE (`user_acc` = ? AND `status` = '1') "
                . "UNION DISTINCT "
                . "SELECT * "
                . "FROM `users` "
                . "INNER JOIN `friend` ON (`username` = `user_acc`) "
                . "WHERE (`user_req` = ? AND `status` = '1')) ORDER BY `username`");
E' indifferente come viene ordinato l'array (a livello sql o php), l'importante è che sia ordinato (almeno) secondo l'username.

Come posso fare?
stefano861 è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2014, 17:00   #2
stefano861
Member
 
Iscritto dal: Nov 2013
Messaggi: 62
Consigli?
stefano861 è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2014, 19:35   #3
GByTe87
Senior Member
 
L'Avatar di GByTe87
 
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
Premesso che non conosco assolutamente PHP e che quello non mi sembra un array multidimensionale, ti direi di usare usort
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO
GByTe87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
macOS 27.2 Golden Gate è disponib...
Fujifilm vuole quintuplicare la produzio...
ChatGPT ora legge email e calendario di ...
Canon, un brevetto descrive un 70-200mm ...
La volante della polizia adesso... vola:...
SK hynix supera i 100.000 miliardi di wo...
Surface Laptop Ultra ha 1.344 zone di lo...
TOP 10 offerte Amazon in 2 minuti: 3 sup...
Mythos 5 ha creato identità false per fa...
Google DeepMind presenta Genie 4, il mod...
Beats Studio Pro a 179€ in 3 colori, sup...
Oracle affida agli agenti di IA l'implem...
CO2 atmosferica a livello record nel 202...
Un portatile per i militari, ma con un o...
Discord, i messaggi di oltre 63.000 serv...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v