Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Seřazení vícerozměrného pole - PHP

Dobrý den mám takový problém. Hledám řešení na internetu, ale žádné nefunguje a už si nevím rady.

Mám více rozměrné pole v php

$pole=>"skore" 
    [0]=> 12
    [1]=> 9
    [2]=> 15
    [3]=> 5
    [4]=> 17
$pole=>"0" 
    [0]=> 15
    [1]=> 16
    [2]=> 46
    [3]=> 18
    [4]=> 45
$pole=>"1" 
    [0]=> 25
    [1]=> 32
    [2]=> 15
    [3]=> 66
    [4]=> 33
$pole=>"2" 
    [0]=> 10
    [1]=> 20
    [2]=> 16
    [3]=> 16
    [4]=> 99

a já bych ho potřeboval seřadit podle skore celé sloupce, aby to pole vypadalo následovně:

$pole=>"skore" 
    [0]=> 5
    [1]=> 9
    [2]=> 12
    [3]=> 15
    [4]=> 17
$pole=>"0" 
    [0]=> 18
    [1]=> 16
    [2]=> 18
    [3]=> 46
    [4]=> 45
$pole=>"1" 
    [0]=> 66
    [1]=> 32
    [2]=> 25
    [3]=> 15
    [4]=> 33
$pole=>"2" 
    [0]=> 16
    [1]=> 20
    [2]=> 10
    [3]=> 16
    [4]=> 99

Pomohl by mi prosím někdo s tím? Předem moc děkuji.

Předmět Autor Datum
Použi databázu. Alebo si teda zoraď tú jednu dimenziu, a podľa jeho indexov ten zvyšok. nový
pozorovateľ 25.05.2018 00:06
pozorovateľ
Bohužel databázi nemohu použít. Jinak by to byla pohoda. nový
Jozin11 25.05.2018 06:29
Jozin11
Aj tak je to pohoda, veď využiješ index utriedeného poľa pre triedenie zvyšných polí. A dokonca má P… nový
pozorovateľ 25.05.2018 08:55
pozorovateľ
foreach ($pole as $klic=>$pr) { asort($pole[$klic]); //nebo sort($pole[$klic]); }… nový
hynajs 25.05.2018 00:22
hynajs
Todle mi to seřadí takle: $pole=> [0]=> 5 [1]=> 9 [2]=> 12 [3]=> 15 [4]=> 17 $pole=>"0" [0]=> 15 [1… nový
Jozin11 25.05.2018 06:34
Jozin11
Ale já potřebuji, aby se všechny hodnoty seřadili podle $pole["skore"]. Podle skoré se prohodily cel… nový
Mlocik97 25.05.2018 13:16
Mlocik97
tada mas ulozene v zlej strukture. vyrob si nejaky objekt, kde kazdy atribut bude predstavovat udaj… nový
wam_Spider007 25.05.2018 07:30
wam_Spider007
Chápu, ale v tomhle případě to asi moc použít nebudu moc. Kouknu na to. nový
Jozin11 25.05.2018 08:11
Jozin11
Preco nie? Data z tvojich struktur, sa celkom lahko daju pretransformovat do tejto. A potom aj spat.… nový
wam_Spider007 25.05.2018 09:08
wam_Spider007
Pomohl bys mi stím? Moc nevím jak do toho. nový
Jozin11 25.05.2018 11:09
Jozin11
prevod z tvojich struktur na tuto novu: $objects = array(); for ($i = 0; $i < count($pole["skore"]… nový
cigan 25.05.2018 13:47
cigan
prevod spat: $pole = array(); $skore = array(); $stlpec0 = array(); $stlpec1 = array(); $stlpec2 =… nový
cigan 25.05.2018 13:53
cigan
Umim jen v Jave, prepsat do PHP jiste zvladnes. Muzes kliknout na execute a vyzkouset si to...:-) h… nový
MaSo 25.05.2018 07:58
MaSo
To je ono. Pokusím se o to. Javě moc nerozumím. nový
Jozin11 25.05.2018 08:09
Jozin11
Ted na to koukam a mam tam chybu. ktera se projevi jen nekdy. Kdo ji najde, ma u me virutalni pivko.… nový
MaSo 25.05.2018 12:17
MaSo
http://uk.php.net/manual/en/function.array-multisort.php nový
Dwane Dibbley 25.05.2018 12:57
Dwane Dibbley
Tak vyřešeno, díky moc chlapy. poslední
Jožin11 25.05.2018 15:10
Jožin11

Todle mi to seřadí takle:

$pole=>
[0]=> 5
[1]=> 9
[2]=> 12
[3]=> 15
[4]=> 17
$pole=>"0"
[0]=> 15
[1]=> 16
[2]=> 18
[3]=> 45
[4]=> 46

Ale já potřebuji, aby se všechny hodnoty seřadili podle $pole["skore"]. Podle skoré se prohodily celé řádky.

tada mas ulozene v zlej strukture. vyrob si nejaky objekt, kde kazdy atribut bude predstavovat udaj z jedneho pola.
Cize napriklad:

MojObjekt {
public $score;
public $stlpec0;
public $stlpec1;
public $stlpec2;
}

Urob si potom pole tohto objektu a pouzi funkciu usort na zoradenie.
Budes tak mat namiesto 3 stlpcov, ktore mas teraz v 3 poliach, 1 pole o 5 riadkoch. Kazdy riadok bude ten objekt.
navod na usort najdes na strankach PHP.

prevod z tvojich struktur na tuto novu:


$objects = array();
for ($i = 0; $i < count($pole["skore"]); $i++)
{
$obj = new MojObjekt();
$obj->score = $pole["skore"][$i];
$obj->stlpec0 = $pole["0"][$i];
$obj->stlpec1 = $pole["1"][$i];
$obj->stlpec2 = $pole["2"][$i];
array_push($objects, $obj);
}

prevod spat:


$pole = array();
$skore = array();
$stlpec0 = array();
$stlpec1 = array();
$stlpec2 = array();
foreach($objects as $obj)
{
array_push($skore, $obj->score);
array_push($stlpec0, $obj->stlpec0);
array_push($stlpec1, $obj->stlpec1);
array_push($stlpec2, $obj->stlpec2);
}
$pole["skore"] = $skore;
$pole["0"] = $stlpec0;
$pole["1"] = $stlpec1;
$pole["2"] = $stlpec2;

Zpět do poradny Odpovědět na původní otázku Nahoru