Autor Zpráva
Radim24
Profil *
Zdravím Vás,
měl bych takový dotaz, protože už nevím kde najít nápovědu. Mám načtené (vícerozměrné) pole souboru pomocí file(). V něm sloupce s uživateli (id,name,surname,atd.) a chtěl bych to třídit podle jména a podle příjmení (tzn. jméno a příjmení má tvořit jedinečný klíč). Spíše jde o to, že chci udělat dynamickou funkci ke třídění, kdybych chtěl uspořádání podle jiných sloupců. Zkoušel jsem definovat vlastní funkci, ale největší problém byl v tom, že to přeházelo pořadí klíčů. Klíče musí zůstat, to s čím potřebuji hýbat jsou tyx vnořené pole (záznamy).

Zkoušel jsem nadefinovat vlastní funkci, ale to setřídí podle kl94e:

function cmp ($a) // funkce třídění
{
if ($a[1] == $a[2]) return 0;
return ($a[1] > $a[2]) ? -1 : 1;
}

uasort ($record, "cmp");
print_r($record);

Jestli někdo víte, co s tím nebo o nějakém odkazu, budu vděčný

Zdraví
Radim
WertriK
Profil
array_multisort(); ?

popř. nahoď nějaký příklad co a jak to chceš setřídit ...
echo
Profil *

<?php
# Exemple of sorting multi-dimensional arrays by one of it's fields:

$result[0]['nome']='Joao';
$result[0]['order']=5;
$result[0]['comment']='taky';
$result[1]['nome']='Pedro';
$result[1]['order']=1;
$result[1]['comment']='onaky';
$result[2]['nome']='Marcelo';
$result[2]['order']=3;
$result[2]['comment']='posraty';
$result[3]['nome']='Kapusto';
$result[3]['order']=8;
$result[3]['comment']='postaty';
$result[4]['nome']='Rafaelo';
$result[4]['order']=4;
$result[4]['comment']='odfarbeny';

if(isset($_GET['sort_by']))
{
$sort_by=$_GET['sort_by'];
foreach($result as $row)$sort_col[]=$row[$sort_by];
array_multisort($sort_col,SORT_ASC,$result);
}

echo'Sort by '." ";
echo'<a href="'.$PHP_SELF.'?sort_by=nome" >nome</a>'." ";//'.$QUERY_STRING.'&
echo'<a href="'.$PHP_SELF.'?sort_by=order" >order</a>'." ";
echo'<a href="'.$PHP_SELF.'?sort_by=comment" >comment</a>'." ";

echo'<pre>'." ";
print_r($result);
echo'</pre>'." ";
?>
echo
Profil *
http://php.net/manual/cs/function.array-multisort.php
Radim24
Profil *
díky,
vyzkouším to co to bude dělat
Toto téma je uzamčeno. Odpověď nelze zaslat.