Перейти к публикации
Jungle

PHP Сортировка массива

Рекомендованные сообщения

Jungle

Доброго времени суток!

Нужна помощь в сортировке многомерного массива php.

В чем собственно суть: есть трехмерный массив player_array который нужно отсортировать по убыванию второй колонки (frag), а именно:

1.jpg

Для этого я использовал этот код:

$player_array	= array();
$int = $infos['activeplayers'];
for ($i=0; $i<$int; $i++) {
  $player = $players[$i];
  $player['name'] = htmlspecialchars($player['name']);
  $player['frag'] = $player['frag'];
  $player['time'] = $player['time'];
  $player_info = array(
	"name"		=> $player['name'],
	"frag"		=> $player['frag'],
	"time"		=> $player['time']
	);	
  $player_array[]=$player_info;
  foreach ($player_array as $key => $row) {
	$name[$key] = $row["name"];
	$frag[$key] = $row["frag"];
	$time[$key] = $row["time"];
	}
  array_multisort($frag, SORT_DESC, $time, SORT_DESC, $name, SORT_DESC, $player_array);

Все бы хорошо, но по не понятным причинам он сортирует списки игроков серверов только с нечетными номерами.

Код вывода в .tpl файле:

 

 

<table>															
 <tr style="height: 20px;"> 
  <td style="width:150px; margin-left:10px;"><b>{"_NAME"|lang}</b></th> 
  <td class="_center" style="width:90px;"><b>{"_FRAGS"|lang}</th> 
  <td class="_center" style="width:90px;"><b>{"_ONLINE"|lang}</b></th>
 </tr> 
 {if $serv.cur_players >= 1}
 {foreach from=$serv.players item=player}
 <tr class="list">
  <td class="vtop" style="margin-left:10px;">{if $player.name != ""} {$player.name}{else} {"_PLAYERCONNECTING"|lang}{/if}</td>
  <td class="_center vtop">{$player.frag}</td>
  <td class="_center vtop">{$player.time}</td>
 </tr>
 {/foreach}
 {else}
 <tr>
  <td colspan="3">{"_NOPLAYERS"|lang}</td>
 </tr>
 {/if}
</table>

 

 

Вот и сам .php файл -> view.php

Надеюсь на Вашу помощь. Спасибо.

Изменено пользователем Jungle

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Brain Power

Может дело в особенности самой  ф-ции "array_multisort". Мне кажется будет меньше гемора, если найдешь способы сортировки в Гугле и сам с 0 напишешь. Там не больше 30 строк кода, ну, это на Си так :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Jungle

Зачем тогда мультисортировка?

http://www.php.net/manual/ru/function.rsort.php

Если кол-во фрагов одно и тоже у 2-3х игроков то этих 2-3х игроков надо сортировать по времени (по 3-й колонке).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...