|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
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] => ../../.... ) } 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;
}
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')");
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`");
Come posso fare? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2013
Messaggi: 62
|
Consigli?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:59.


















