Код: Выделить всё
Array ( [41] => Array ( [user] => +7950====== [count] => 3 ) )
Код: Выделить всё
Array ( [41] => Array ( [user] => +7950====== [count] => 3 ) )
yan писал(а):usort()
Код: Выделить всё
public function actionIndex()
{
$promo = Promo::model()->findAll();
foreach ($promo as $mod){
$count = Users::model()->count('promo=:promo',array(':promo'=>$mod->promo));
$user = Users::model()->findByPk($mod->user_id);
$promout[]=array('user'=>$user->login,'count' =>$count);
}
$guynames = array();
foreach ($promout as $counter) {
$guynames[] = $counter['count'];
}
array_multisort($guynames, SORT_DESC, $promout);
$this->render('index',array('promo'=>$promout));
}
мне кажется эту задачу вообще лучше решать средcтвами моделей и sql, как минимум получение количества можно сделать через статический релейшен Promo к Users, по сортировке если уж делать в массиве я бы все таки предпочел usort и простейшую анонимную функцию, чем создавать еще один массив и крутить еще один циклBarssoft писал(а):yan писал(а):usort()Вот так работает сортировка по убываниюКод: Выделить всё
public function actionIndex() { $promo = Promo::model()->findAll(); foreach ($promo as $mod){ $count = Users::model()->count('promo=:promo',array(':promo'=>$mod->promo)); $user = Users::model()->findByPk($mod->user_id); $promout[]=array('user'=>$user->login,'count' =>$count); } $guynames = array(); foreach ($promout as $counter) { $guynames[] = $counter['count']; } array_multisort($guynames, SORT_DESC, $promout); $this->render('index',array('promo'=>$promout)); }
usort у меня не отработал почему то, а так про реляционую связь и потом количество выводить что то даже не подумал, спасибо за идеюyan писал(а):мне кажется эту задачу вообще лучше решать средcтвами моделей и sql, как минимум получение количества можно сделать через статический релейшен Promo к Users, по сортировке если уж делать в массиве я бы все таки предпочел usort и простейшую анонимную функцию, чем создавать еще один массив и крутить еще один циклBarssoft писал(а):yan писал(а):usort()Вот так работает сортировка по убываниюКод: Выделить всё
public function actionIndex() { $promo = Promo::model()->findAll(); foreach ($promo as $mod){ $count = Users::model()->count('promo=:promo',array(':promo'=>$mod->promo)); $user = Users::model()->findByPk($mod->user_id); $promout[]=array('user'=>$user->login,'count' =>$count); } $guynames = array(); foreach ($promout as $counter) { $guynames[] = $counter['count']; } array_multisort($guynames, SORT_DESC, $promout); $this->render('index',array('promo'=>$promout)); }
возможно потому, что он функцию криво принимает - в последнем примере в мануле описано как раз сортировка по полюusort у меня не отработал почему то
http://www.php.уsu/functions/?usort тоже как бы не круто, еще массив сделать или функцию... Да в моем случаи это не критично, все равно надо будет переписать, а пока там 9 записей можно и так выводитьyan писал(а):возможно потому, что он функцию криво принимает - в последнем примере в мануле описано как раз сортировка по полюusort у меня не отработал почему то
usort() в модели надо вызывать так:http://www.php.уsu/functions/?usort тоже как бы не круто, еще массив сделать или функцию... Да в моем случаи это не критично, все равно надо будет переписать, а пока там 9 записей можно и так выводить
Код: Выделить всё
/**
* @param $a
* @param $b
* @return int|\lt
*/
public static function compareByName($a, $b) {
return strcasecmp($a, $b);
}
Код: Выделить всё
usort($return_childs, array($this,'compareByName'));