Member 13792515 Ответов: 1

Как я могу сделать новый массив из многомерного массива


Добрый вечер, мои помощники! У меня есть многомерный массив $data, подобный этому:
Array
(
[0] => thunderteszt
[1] => orevikod
[2] => 5400
[3] => 6
)
Array
(
[0] => bakterhaz1982
[1] => $s$w$0ffТΉЏИÐΞЯ
[2] => 5540
[3] => 3
)
Array
(
[0] => bakterhaz1982
[1] => $s$w$0ffТΉЏИÐΞЯ
[2] => 5570
[3] => 2
)
Array
(
[0] => bakterhaz1982
[1] => $s$w$0ffТΉЏИÐΞЯ
[2] => 5740
[3] => 1
)
Array
(
[0] => thunderteszt
[1] => orevikod
[2] => 5840
[3] => 5
)
Array
(
[0] => thunderteszt
[1] => orevikod
[2] => 5890
[3] => 4
)


Вы можете видеть, что у меня есть массивы с повторяющимся ником в строке[1] ($s$w$0ffТΉЏИÐΞЯ). Я выберу наименьшее значение (строка[2]) из повторяющихся массивов.

После этого я создам новый массив из выбранных значений и увижу только следующее:

Array
(
[0] => thunderteszt
[1] => orevikod
[2] => 5400
[3] => 6
)
Array
(
[0] => bakterhaz1982
[1] => $s$w$0ffТΉЏИÐΞЯ
[2] => 5540
[3] => 3
)


Что я уже пробовал:

function pts_panel_on($aseco) {

global $pts;

$maniapos = -1;   
$linkmaniapos = -0.2;
$linkmaniapos2 = -0;
$xml = '<manialinks><manialink id="40400">';
$xml .= '<frame posn="48.2 15 0">';
if (empty($pts->finish)) return true;

$beerok=array();

foreach($pts->finish as $key=>$row){   
$becenev[$key] = $row['nick'];  
$ido[$key] = $row['score']; 
} 

array_multisort($ido, SORT_ASC, $becenev, SORT_ASC, $pts->finish );
foreach($pts->finish as $data){
print_r(array_values($data));
$rpointinc++;
$linkmaniapos =  ($linkmaniapos - 3) ;
$linkmaniapos2 =  ($linkmaniapos2 - 3) ;
$maniapos =  ($maniapos - 3) ;

if ($rpointinc <= 10) { 

$xml .= '<format textsize="1"/><label posn="-19.3 ' . $linkmaniapos. ' 
1.5" sizen="30 3 2" scale="0.3" style="TextRaceChrono" halign="center" 
text="$s$0f0'.$rpointinc .' "/>';
$xml .= '<format textsize="1"/><label posn="-27.5 ' . $linkmaniapos . ' 1.5" 
sizen="30 3 2" halign="left" scale="0.3" style="TextRaceChrono" 
text="$s$fff'.formatTime($data['score']).' "/>';   
$xml .= '<format textsize="1.7"/><label posn="-16.5 ' . $linkmaniapos . ' 
1.6" sizen="12 3 2" halign="left" text="$000' . $data['nick'] . ' "/>';

$xml .= '<quad sizen="4 3" posn="-19.6 ' . $maniapos . ' 1"  valign="center" 
halign="center" style="Bgs1InRace" substyle="NavButton" />';
$xml .= '<quad sizen="6.2 3" posn="-24.9 ' . $maniapos . ' 1"  
valign="center" halign="center" style="Bgs1InRace" substyle="NavButton" />';
$xml .= '<quad sizen="17 3" posn="-17.4 ' . $maniapos . ' 1.1"  
valign="center" halign="left" style="Bgs1InRace" substyle="NavButton"/>';
}

}
$xml .= '</frame>';
$xml .= '</manialink></manialinks>';
foreach ($pts->Players as $data2) {
$aseco->client->query("SendDisplayManialinkPageToLogin", $data2['login'], 
$xml, 0, false);
}
}

Kornfeld Eliyahu Peter

Исходная структура данных дана, или это зависит от вас?

Member 13792515

Это код для онлайн-игры. Когда игрок достигнет финиша, я получу его логин, ник, счет и позицию. Но когда он заканчивает 5 раз подряд, то у меня есть 5 массивов с его деталями. Я буду держать только один, где у него самый низкий балл

1 Ответов

Рейтинг:
0

Member 13792515

это не на 100% так, как я хочу.
Я попробую объяснить другим способом, чего я хочу.
Базовый массив многомерен, вот так:
Массив(
Массив
(
[0] => a
[1] => 33
)
Массив
(
[0] => b
[1] => 26
)
Массив
(
[0] => a
[1] => 11
)
Массив
(
[0] => c
[1] => 22
)
)
Когда я создаю этот массив, у меня есть 2 массива с одинаковым именем "a", но разными значениями "33" и "11".
Я сохраню только самое маленькое значение и отброшу/удалю самое большое.
Так что мой окончательный массив будет выглядеть примерно так:
Массив(
Массив
(
[0] => b
[1] => 26
)
Массив
(
[0] => a
[1] => 11
)
Массив
(
[0] => c
[1] => 22
)
)

Member 13792515

теперь я получил это сообщение:
[PHP Warning] min(): когда задан только один параметр, он должен быть массивом в строке 317 файла /home/xaseco/plugins/plugin.goalrace.php
[PHP Warning] max(): когда задан только один параметр, он должен быть массивом в строке 318 файла /home/xaseco/plugins/plugin.goalrace.php
[PHP Warning] min(): когда задан только один параметр, он должен быть массивом в строке 317 файла /home/xaseco/plugins/plugin.goalrace.php
[PHP Warning] max(): когда задан только один параметр, он должен быть массивом в строке 318 файла /home/xaseco/plugins/plugin.goalrace.php
[PHP Warning] min(): когда задан только один параметр, он должен быть массивом в строке 317 файла /home/xaseco/plugins/plugin.goalrace.php
[PHP Warning] max(): когда задан только один параметр, он должен быть массивом в строке 318 файла /home/xaseco/plugins/plugin.goalrace.php
[PHP Warning] min(): когда задан только один параметр, он должен быть массивом в строке 317 файла /home/xaseco/plugins/plugin.goalrace.php
[PHP Warning] max(): когда задан только один параметр, он должен быть массивом в строке 318 файла /home/xaseco/plugins/plugin.goalrace.php
Массив
(
[0] => массив
(
[0] => массив
(
[login] => thunderteszt
[ник] => оревикод
[оценка] => 5660
[pos] => 4
)

[1] => массив
(
[логин] => bakterhaz1982
[ник] => $s$w$0ffТΉЏИÐΞЯ
[оценка] => 5770
[pos] => 1
)

[2] => массив
(
[login] => thunderteszt
[ник] => оревикод
[оценка] => 6080
[pos] => 3
)

[3] => массив
(
[логин] => bakterhaz1982
[ник] => $s$w$0ffТΉЏИÐΞЯ
[оценка] => 6250
[pos] => 2
)

)

)

теперь мой код:

функция pts_panel_on($aseco) {

глобальный $pts;

$маниапос = -1;
$linkmaniapos = -0,2;
$linkmaniapos2 = -0;
$XML-файле = в '<manialinks&ГТ;&ЛТ;manialink идентификатор="40400"&ГТ;';
$XML .= '';
if (empty($pts->finish)) возвращает true;

$beerok=массив();

по каждому элементу($ПЦ-&ГТ;закончить, как $ключ=&ГТ;$строки){
$becenev[$key] = $row['nick'];
$Идо[$ключ] = $строки['результат'];
}

функция array_multisort($Идо, SORT_ASC, $becenev, SORT_ASC, $ПЦ-&ГТ;отделка );


$templevel=0;

$newkey=0;
$grouparr = массив ();
$grouparr[$templevel]="";

по каждому элементу ($ПЦ-&ГТ;закончить, как $ключ =&ГТ; $вал) {
if ($templevel==$val[login]){
$grouparr[$templevel][$newkey]=$val;
} еще {
$grouparr[$val[login]][$newkey]=$val;
}
$newkey++;
print_r ($grouparr[вход в систему]);
print_r (min($grouparr[оценка]));
print_r (max($grouparr[оценка]));
}
print_r($grouparr);
...

Member 13792515

я думаю, что должен отказаться от этого, потому что слишком сложно :(