Autor Zpráva
fjf
Profil
Ahojte

existuje nejaký jednoduchý spôsob ako zotriediť viacrozmerné pole podľa jednej jeho položky?

príklad:

majme pole $timy s hodnotami:

$timy[0]["tim"] = aaa
$timy[0]["pocet"] = 100
$timy[1]["tim"] = bbb
$timy[1]["pocet"] = 300
$timy[2]["tim"] = ccc
$timy[2]["pocet"] = 200

a chcem to zoradiť podľa položky "pocet"...
__construct
Profil
fjf:
Čo takto pozrieť php manuál? Spôsobov je viac
fjf
Profil
__construct:
kukol som, ale nenašiel som nič "jednoduché" ;-)
P.S.: A náhodou som dosť veľký amatér...
1Pupik1989
Profil
Funkce usort je na to jak dělaná, sám jsem hledal způsob třídění vícerozměrných polí dlouho a jediná tahle funkce mi padla do oka.
fjf
Profil
až nato, že usort asi nepochopím :-)
to vôbec nevyzerá jednoducho a mám v tom zmätok
nechce sa niekomu to prepísať na môj príklad?

P.S.: Nateraz som to vyriešil dvoma samostatnými poľami $tim a $pocet a nasledne cez funkciu arsort zotriedujem pole $pocet a zistujem nasledne indexy, ktorymi sa dostavam aj k polozkam pola $tim. Krkolomne, ale jednoduche a funkcne. A pre mna o hodne pochopitelnejsie. Nic to ale nemeni natom, ze rad by som chapal aj usort, len z manualu mi to pride dost nepochopitelne...
ShiraNai7
Profil
fjf:
$timy = array();
$timy[0]["tim"] = 'aaa';
$timy[0]["pocet"] = 100;
$timy[1]["tim"] = 'bbb';
$timy[1]["pocet"] = 300;
$timy[2]["tim"] = 'ccc';
$timy[2]["pocet"] = 200 ;

function seradit($a, $b)
{
 if($a['pocet'] == $b['pocet']) return 0;
 if($a['pocet'] > $b['pocet']) return 1;
 return -1;
}

usort($timy, 'seradit');
print_r($timy);


Výsledek je:
Array
(
    [0] => Array
        (
            [tim] => aaa
            [pocet] => 100
        )

    [1] => Array
        (
            [tim] => ccc
            [pocet] => 200
        )

    [2] => Array
        (
            [tim] => bbb
            [pocet] => 300
        )

)
fjf
Profil
Ok, dik.
Takze $a a $b v tej funkcii reprezentuju $timy[i] ?

A keby som mal 3-rozmerne pole:
$timy[i][j]["timy"]
$timy[i][j]["pocet"]
bola by funkcia seradit taka ista, len $a a $b by reprezentovalo $timy[i][j] ?

A to iste aj pre pole:
$timy[i]["timy"][j]
$timy[i]["pocet"][j]
?

Alebo tomu fakt nerozumiem? ;-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0