2015-05-16 1 views
0

Другой пост Array_multisort не помог мне. У меня есть 2 массива сортировки по имени. Когда я array_multisort, он сортирует по ID вместо этого. Как я могу это исправить? Я использую Joomla 2.5. Заранее спасибо.Array_multisort не сортировать по имени

$query = "SELECT DISTINCT(t.id) as id, 
       t.t_name as name, t.t_city as city, 
       (count(pd.rs)) as pdc 
    FROM #__bl_teams as t 
    JOIN #__bl_paid as pd ON pd.t_id = t.id 
     AND pd.rs=1 AND ((MID(pd.r_date,1,10)) >= t.start_date) 
    WHERE (t.id IN($teams)) GROUP BY t.id ORDER BY t.t_name ASC"; 

$db - > setQuery($query); 
$players1 = $db - > loadObjectList(); 

///----same query as above, but return array of team Id's---/// 

    $query = "SELECT DISTINCT(t.id) 
    FROM #__bl_teams as t 
    JOIN #__bl_paid as pd ON pd.t_id = t.id AND pd.rs=1 AND ((MID(pd.r_date,1,10)) >= t.start_date) 
    WHERE (t.id IN($teams)) 
    GROUP BY t.id ORDER BY t.t_name ASC"; 
    $db->setQuery($query); 
    $players1a = $db->loadResultArray(); 

    $players3 = implode(',',$players1a); 

///---------------------------------------------------------/// 

    $query = "SELECT DISTINCT(t.id) as id, t.t_name as name, t.t_city as city 
    FROM #__bl_teams as t 
    WHERE (t.id IN($teams)) AND (t.id NOT IN($players3)) 
    GROUP BY t.id ORDER BY t.t_name ASC"; 
    $db->setQuery($query); 
    $players2 = $db->loadObjectList(); 

    $players = array_merge($players1,$players2); 


if ($players) { 
    $play1 = array(); 
    foreach($players as $play) { 
     $play1[] = $play - > name; 
    } 
} 
array_multisort($play1, SORT_ASC, $players); 

var_dump($players); 

array(32) { 
    [0] = > object(stdClass) #441 (4) { ["id"]= > string(3) 
    "455" ["name"] = > string(6) 
    "Barrow" ["city"] = > string(6) 
    "Barrow" ["pdc"] = > string(1) 
    "1" 
} 
[1] = > object(stdClass) #440 (4) { ["id"]= > string(3) 
"480" ["name"] = > string(5) 
"South" ["city"] = > string(9) 
"Anchorage" ["pdc"] = > string(1) 
"2" 
} 
[2] = > object(stdClass) #439 (3) { ["id"]= > string(5) 
"16977" ["name"] = > string(5) 
"atom1" ["city"] = > string(3) 
"aaa" 
} 
[3] = > object(stdClass) #438 (3) { ["id"]= > string(3) 
"456" ["name"] = > string(8) 
"Bartlett" ["city"] = > string(9) 
"Anchorage" 
} 
[4] = > object(stdClass) #437 (3) { ["id"]= > string(3) 
"457" ["name"] = > string(7) 
"Chugiak" ["city"] = > string(11) 
"Eagle River" 
} 
[5] = > object(stdClass) #436 (3) { ["id"]= > string(3) 
"458" ["name"] = > string(6) 
"Colony" ["city"] = > string(6) 
"Palmer" 
} 
[6] = > object(stdClass) #435 (3) { ["id"]= > string(3) 
"459" ["name"] = > string(14) 
"Delta Junction" ["city"] = > string(14) 
"Delta Junction" 
} 
[7] = > object(stdClass) #434 (3) { ["id"]= > string(3) 
"460" ["name"] = > string(6) 
"Dimond" ["city"] = > string(9) 
"Anchorage" 
} 
[8] = > object(stdClass) #433 (3) { ["id"]= > string(3) 
"461" ["name"] = > string(11) 
"Eagle River" ["city"] = > string(11) 
"Eagle River" 
} 
[9] = > object(stdClass) #432 (3) { ["id"]= > string(3) 
"462" ["name"] = > string(4) 
"East" ["city"] = > string(9) 
"Anchorage" 
} 
[10] = > object(stdClass) #431 (3) { ["id"]= > string(3) 
"463" ["name"] = > string(7) 
"Eielson" ["city"] = > string(11) 
"Eielson AFB" 
} 
[11] = > object(stdClass) #430 (3) { ["id"]= > string(3) 
"464" ["name"] = > string(5) 
"Homer" ["city"] = > string(5) 
"Homer" 
} 
[12] = > object(stdClass) #429 (3) { ["id"]= > string(3) 
"465" ["name"] = > string(7) 
"Houston" ["city"] = > string(8) 
"Big Lake" 
} 
[13] = > object(stdClass) #428 (3) { ["id"]= > string(3) 
"466" ["name"] = > string(14) 
"Juneau-Douglas" ["city"] = > string(6) 
"Juneau" 
} 
[14] = > object(stdClass) #427 (3) { ["id"]= > string(3) 
"467" ["name"] = > string(13) 
"Kenai Central" ["city"] = > string(5) 
"Kenai" 
} 
[15] = > object(stdClass) #426 (3) { ["id"]= > string(3) 
"468" ["name"] = > string(9) 
"Ketchikan" ["city"] = > string(9) 
"Ketchikan" 
} 
[16] = > object(stdClass) #425 (3) { ["id"]= > string(3) 
"469" ["name"] = > string(6) 
"Kodiak" ["city"] = > string(6) 
"Kodiak" 
} 
[17] = > object(stdClass) #424 (3) { ["id"]= > string(3) 
"470" ["name"] = > string(7) 
"Lathrop" ["city"] = > string(9) 
"Fairbanks" 
} 
[18] = > object(stdClass) #423 (3) { ["id"]= > string(3) 
"471" ["name"] = > string(15) 
"Monroe Catholic" ["city"] = > string(9) 
"Fairbanks" 
} 
[19] = > object(stdClass) #422 (3) { ["id"]= > string(3) 
"472" ["name"] = > string(7) 
"Nikiski" ["city"] = > string(7) 
"Nikiski" 
} 
[20] = > object(stdClass) #421 (3) { ["id"]= > string(3) 
"473" ["name"] = > string(10) 
"North Pole" ["city"] = > string(10) 
"North Pole" 
} 
[21] = > object(stdClass) #420 (3) { ["id"]= > string(3) 
"474" ["name"] = > string(6) 
"Palmer" ["city"] = > string(6) 
"Palmer" 
} 
[22] = > object(stdClass) #419 (3) { ["id"]= > string(3) 
"475" ["name"] = > string(7) 
"Service" ["city"] = > string(9) 
"Anchorage" 
} 
[23] = > object(stdClass) #418 (3) { ["id"]= > string(3) 
"476" ["name"] = > string(6) 
"Seward" ["city"] = > string(6) 
"Seward" 
} 
[24] = > object(stdClass) #417 (3) { ["id"]= > string(3) 
"477" ["name"] = > string(5) 
"Sitka" ["city"] = > string(5) 
"Sitka" 
} 
[25] = > object(stdClass) #416 (3) { ["id"]= > string(3) 
"478" ["name"] = > string(7) 
"Skyview" ["city"] = > string(8) 
"Soldotna" 
} 
[26] = > object(stdClass) #415 (3) { ["id"]= > string(3) 
"479" ["name"] = > string(8) 
"Soldotna" ["city"] = > string(8) 
"Soldotna" 
} 
[27] = > object(stdClass) #414 (3) { ["id"]= > string(3) 
"481" ["name"] = > string(16) 
"Thunder Mountain" ["city"] = > string(6) 
"Juneau" 
} 
[28] = > object(stdClass) #413 (3) { ["id"]= > string(3) 
"482" ["name"] = > string(6) 
"Valdez" ["city"] = > string(6) 
"Valdez" 
} 
[29] = > object(stdClass) #412 (3) { ["id"]= > string(3) 
"483" ["name"] = > string(7) 
"Wasilla" ["city"] = > string(7) 
"Wasilla" 
} 
[30] = > object(stdClass) #411 (3) { ["id"]= > string(3) 
"484" ["name"] = > string(4) 
"West" ["city"] = > string(9) 
"Anchorage" 
} 
[31] = > object(stdClass) #410 (3) { ["id"]= > string(3) 
"485" ["name"] = > string(11) 
"West Valley" ["city"] = > string(9) 
"Fairbanks" 
} 
} 

ответ

1

Я думаю array_multisort() не работает так, как вы думаете, это работает.

Вы хотите отсортировать значения, возвращаемые с вашего запроса на name, правильно? Что вы ищете в этом случае usort():

... 

$players = $db - > loadObjectList(); 

function nameComparator($a, $b) { 
    return strcmp(strtoupper($a->name), strtoupper($b->name)); 
} 

usort($players, "nameComparator"); 
+0

Попытка этот код сейчас .. – user1071915

+0

Я попробовал ваш код, и он делает то же самое array_multisort сделал. Я редактировал свой код, чтобы включить в него всю вещь, чтобы вы могли видеть, что я пытаюсь сделать. Да, я пытаюсь сортировать по имени. Благодаря! – user1071915

+0

Не могли бы вы отправить 'var_dump' массива' $ players' после выполнения запроса? – Timo