Масивы, сортировка

SpitefulBeaver

Новичок
Масивы, сортировка

Здравствуйте! Я долго искал по форуму решение моей проблемы но так и не получилось, так же пробовал сделать по факу:

PHP:
 <?php
//сдесь я читаю два файла
$base_sort1 = "sostav_r.dat";
$general1 = file ($base_sort1);
$base_sort2 = "sostav_mes.dat";
$general2 = file ($base_sort2);

for ( $i = 0; $i < count ($general1); $i++) {

list ($nick1,$level1,$img1,$sull1,$mesto1,$exp1) = explode("||", $general1[$i]);
list ($nick2,$level2,$img2,$sull2,$mesto2,$exp2) = explode("||", $general2[$i]);
        if ($level1==4) { $old="25"; }
        if ($level1==5) { $old="30"; }
        if ($level1==6) { $old="35"; }
        if ($level1==7) { $old="40"; }
        if ($level1==8) { $old="45"; }
        if ($level1==9) { $old="50"; }
// вот сдесь я считаю разницу в количестве баз...
$expold = "$exp1"-"$exp2";
$exp = "$expold"/"$old";

echo $nick1;
echo $level1;
echo $img1;
echo $sull1;
echo $mesto1;
echo ceil($exp);
}
  ?>
У меня вопрос как правильно отсортировать полученные результаты, с использованием array-multisort?
Заранее благодарен...
 

SpitefulBeaver

Новичок
а если сделать вот так:
PHP:
list ($ob[$i][nick1],$ob[$i][level1],$ob[$i][img1],$ob[$i][sull1],$ob[$i][mesto1],$ob[$i][exp1]) = explode("||", $general1[$i]);
это будет массив?
 

kvf77

Red Devil
SpitefulBeaver

я не пойму - зачем тебе list сдался-то?
почему не сделать вот так:

$massiv = explode("||", $general1[$i]);

print_r($massiv);
 

SpitefulBeaver

Новичок
kvf77
у меня там не одна строка просто
в файле записано например:
SBeaveR||7||man.gif||1203||
Pastor||6||sir.gif||708||
и так далее
 

kvf77

Red Devil
SpitefulBeaver

блин, ты сделал, что я тебе написал?
хоть миллион строк - каким боком list тебе помогает?
 

SpitefulBeaver

Новичок
почучается
Array ( [0] => SBeaveR [1] => 7 [2] => man.gif [3] => 1203 [4] => )
Array ( [0] => Pastor [1] => 6 [2] => sir.gif [3] => 708 [4] => )
но почему Array ( [0]=>) всегда нулевой
 

kvf77

Red Devil
SpitefulBeaver

ты вообще с массивами работать умеешь? просто сказка

ну сделай $massiv[] = explode("||", $general1[$i]);

print_r($massiv);

хватит тормозить уже - или я каждую букву за тебя говорить должен?
 

SpitefulBeaver

Новичок
kvf77 работал с ними

// ну сделай $massiv[] = explode("||", $general1[$i]);

$massiv = explode("||", $general1[$i]);
и
massiv[] = explode("||", $general1[$i]);
одно и тоже елси поставить massiv[$i] - бесконечность получается...
 

kvf77

Red Devil
SpitefulBeaver

так - надоело уже если честно - я должен разбираться за тебя? здесь тебе дали достаточно информации, чтобы ты дальше сам разбирался. Пока я не вижу чем тебе помочь - почитай документацию в разделе Массивы.

Еще тебе надо явно почитать вот это:
Ничего не работает - что делать? http://phpfaq.ru/debug

в конце концов - включи уже голову и подумай
 

SpitefulBeaver

Новичок
kvf77
извини все разобрался, просто я не правильно одну скобку поставил, значит поставили ключ теперь у нас информация вида :
Array (
[0] => Array ( [0] => SBeaveR [1] => 7 [2] => man.gif [3] => 1203 [4] => )
[1] => Array ( [0] => Pastor [1] => 6 [2] => sir.gif [3] => 708 [4] => ) ) и так далее с повышением на +1 ключа...

вопрос: чем лучше отсортировать этот массив: array_multisort или usort

будет ли правильным после этого отсортировать
 

kvf77

Red Devil
SpitefulBeaver

правильнее сортировать тем, что даст тебе нужный результатт - это ж очевидно - а что бы бы хотел увидеть в конечном итоге ты не написал - потому я не могу сказать что лучше использовать
 

SpitefulBeaver

Новичок
kvf77
например исходное
SBeaveR||7||man.gif||1203||
Pastor||6||sir.gif||708||
Eave||7||man.gif||1103||
Ptor||6||sir.gif||809||

чтобы массиве было

SBeaveR => 7 => man.gif => 1203
Eave => 7 => man.gif =>1103
Ptor => 6 => sir.gif =>809
Pastor => 6 => sir.gif =>708

тоесть сортировка по 4 значению

-~{}~ 20.10.05 16:18:

все посидел посмотрел и сделал через uasort

кому надо вот что получилось:
PHP:
$general1 = file ($base_sort1);

for ( $i = 0; $i < count ($general1); $i++) {

$massiv[] = explode("||", $general1[$i]);

}

function cmp ($a, $b) {
    if ($a[3] == $b[3]){ return 0;
    }
    return ($a[3] > $b[3]) ? -1 : 1;
}


uasort ($massiv, "cmp");
foreach ($massiv as $key=>$val) {echo $val[0].' -- '.$val[1].' -- '.$val[2].' -- '.$val[3].'<br>';
}
?>
 
Сверху