/ / Triedenie asociatívneho poľa so špecifickými požiadavkami - php, polia

Triedenie asociatívneho poľa so špecifickými požiadavkami - php, polia

Mám dynamicky vytvorené nasledujúce pole.

Array
(
[1x2] => Array
(
[AWAY] => Array
(
[PL] => 1.6
[Yield] => 19.4
[YieldLS] => 19.4
[Picks] => 8
[Price] => 14.97
[Stake] => 8
[AvgStake] => 1
[AvgOdd] => 1.87
)

[HOME] => Array
(
[PL] => 6.9
[Yield] => 34.7
[YieldLS] => 34.7
[Picks] => 20
[Price] => 38.25
[Stake] => 20
[AvgStake] => 1
[AvgOdd] => 1.91
)

[DRAW] => Array
(
[PL] => 2.4
[Yield] => 240
[YieldLS] => 240
[Picks] => 1
[Price] => 3.4
[Stake] => 1
[AvgStake] => 1
[AvgOdd] => 3.4
)

[TOTAL] => Array
(
[PL] => 10.9
[Yield] => 294.1
[YieldLS] => 294.1
[Picks] => 29
[Price] => 56.62
[Stake] => 29
[AvgStake] => 3
[AvgOdd] => 7.18
)

)

[Asian Handicap] => Array
(
[HOME] => Array
(
[PL] => 41.9
[Yield] => 9.3
[YieldLS] => 9.3
[Picks] => 448
[Price] => 885.79
[Stake] => 448
[AvgStake] => 1
[AvgOdd] => 1.98
)

[AWAY] => Array
(
[PL] => 31.3
[Yield] => 7.1
[YieldLS] => 7.1
[Picks] => 439
[Price] => 877.33
[Stake] => 439
[AvgStake] => 1
[AvgOdd] => 2
)

[TOTAL] => Array
(
[PL] => 73.2
[Yield] => 16.4
[YieldLS] => 16.4
[Picks] => 887
[Price] => 1763.12
[Stake] => 887
[AvgStake] => 2
[AvgOdd] => 3.98
)

)

[Over/Under] => Array
(
[OVER] => Array
(
[PL] => 14.7
[Yield] => 10.1
[YieldLS] => 10.1
[Picks] => 145
[Price] => 281.45
[Stake] => 145
[AvgStake] => 1
[AvgOdd] => 1.94
)

[UNDER] => Array
(
[PL] => 14.1
[Yield] => 19.5
[YieldLS] => 19.5
[Picks] => 72
[Price] => 140.94
[Stake] => 72
[AvgStake] => 1
[AvgOdd] => 1.96
)

[TOTAL] => Array
(
[PL] => 28.8
[Yield] => 29.6
[YieldLS] => 29.6
[Picks] => 217
[Price] => 422.39
[Stake] => 217
[AvgStake] => 2
[AvgOdd] => 3.9
)

)
)

To, čo chcem, je zoradiť podľa konkrétnych požiadaviek. Napríklad potrebujem výstup ako

 Array
(
[1x2] => Array
(
[HOME] => Array
(
[PL] => 6.9
[Yield] => 34.7
[YieldLS] => 34.7
[Picks] => 20
[Price] => 38.25
[Stake] => 20
[AvgStake] => 1
[AvgOdd] => 1.91
)

[DRAW] => Array
(
[PL] => 2.4
[Yield] => 240
[YieldLS] => 240
[Picks] => 1
[Price] => 3.4
[Stake] => 1
[AvgStake] => 1
[AvgOdd] => 3.4
)

[AWAY] => Array
(
[PL] => 1.6
[Yield] => 19.4
[YieldLS] => 19.4
[Picks] => 8
[Price] => 14.97
[Stake] => 8
[AvgStake] => 1
[AvgOdd] => 1.87
)



[TOTAL] => Array
(
[PL] => 10.9
[Yield] => 294.1
[YieldLS] => 294.1
[Picks] => 29
[Price] => 56.62
[Stake] => 29
[AvgStake] => 3
[AvgOdd] => 7.18
)

)

[Asian Handicap] => Array
(
[HOME] => Array
(
[PL] => 41.9
[Yield] => 9.3
[YieldLS] => 9.3
[Picks] => 448
[Price] => 885.79
[Stake] => 448
[AvgStake] => 1
[AvgOdd] => 1.98
)

[AWAY] => Array
(
[PL] => 31.3
[Yield] => 7.1
[YieldLS] => 7.1
[Picks] => 439
[Price] => 877.33
[Stake] => 439
[AvgStake] => 1
[AvgOdd] => 2
)

[TOTAL] => Array
(
[PL] => 73.2
[Yield] => 16.4
[YieldLS] => 16.4
[Picks] => 887
[Price] => 1763.12
[Stake] => 887
[AvgStake] => 2
[AvgOdd] => 3.98
)

)

[Over/Under] => Array
(
[OVER] => Array
(
[PL] => 14.7
[Yield] => 10.1
[YieldLS] => 10.1
[Picks] => 145
[Price] => 281.45
[Stake] => 145
[AvgStake] => 1
[AvgOdd] => 1.94
)

[UNDER] => Array
(
[PL] => 14.1
[Yield] => 19.5
[YieldLS] => 19.5
[Picks] => 72
[Price] => 140.94
[Stake] => 72
[AvgStake] => 1
[AvgOdd] => 1.96
)

[TOTAL] => Array
(
[PL] => 28.8
[Yield] => 29.6
[YieldLS] => 29.6
[Picks] => 217
[Price] => 422.39
[Stake] => 217
[AvgStake] => 2
[AvgOdd] => 3.9
)

)
)

V prvej úrovni 1x2 by mala byť prvá položka, potom Asian Handicap a naposledy Over/Under, Podobne v 1x2 a Handicap druhá úroveň by mala byť Home, Draw, Away and Total, v Over/Under druhá úroveň Over then Under and then Total, Pre každú položku / prvok chýba, musím pridať prázdny záznam / pole. Čísla elements a keys bude vždy pevne stanovená.

Chýbajúci prípad môže byť takto

 Array
(
[1x2] => Array
(
[HOME] => Array
(
[PL] => ""
[Yield] => ""
[YieldLS] => ""
[Picks] => ""
[Price] => ""
[Stake] => ""
[AvgStake] => ""
[AvgOdd] => ""
)

[DRAW] => Array
(
[PL] => 2.4
[Yield] => 240
[YieldLS] => 240
[Picks] => 1
[Price] => 3.4
[Stake] => 1
[AvgStake] => 1
[AvgOdd] => 3.4
)

[AWAY] => Array
(
[PL] => 1.6
[Yield] => 19.4
[YieldLS] => 19.4
[Picks] => 8
[Price] => 14.97
[Stake] => 8
[AvgStake] => 1
[AvgOdd] => 1.87
)



[TOTAL] => Array
(
[PL] => 10.9
[Yield] => 294.1
[YieldLS] => 294.1
[Picks] => 29
[Price] => 56.62
[Stake] => 29
[AvgStake] => 3
[AvgOdd] => 7.18
)

)

[Asian Handicap] => Array
(
[HOME] => Array
(
[PL] => 41.9
[Yield] => 9.3
[YieldLS] => 9.3
[Picks] => 448
[Price] => 885.79
[Stake] => 448
[AvgStake] => 1
[AvgOdd] => 1.98
)

[AWAY] => Array
(
[PL] => ""
[Yield] => ""
[YieldLS] => ""
[Picks] => ""
[Price] => ""
[Stake] => ""
[AvgStake] => ""
[AvgOdd] => ""
)

[TOTAL] => Array
(
[PL] => 73.2
[Yield] => 16.4
[YieldLS] => 16.4
[Picks] => 887
[Price] => 1763.12
[Stake] => 887
[AvgStake] => 2
[AvgOdd] => 3.98
)

)

[Over/Under] => Array
(
[OVER] => Array
(
[PL] => 14.7
[Yield] => 10.1
[YieldLS] => 10.1
[Picks] => 145
[Price] => 281.45
[Stake] => 145
[AvgStake] => 1
[AvgOdd] => 1.94
)

[UNDER] => Array
(
[PL] => 14.1
[Yield] => 19.5
[YieldLS] => 19.5
[Picks] => 72
[Price] => 140.94
[Stake] => 72
[AvgStake] => 1
[AvgOdd] => 1.96
)

[TOTAL] => Array
(
[PL] => 28.8
[Yield] => 29.6
[YieldLS] => 29.6
[Picks] => 217
[Price] => 422.39
[Stake] => 217
[AvgStake] => 2
[AvgOdd] => 3.9
)

)
)

Snažil som sa použiť samostatné pole na triedenie, ale uvedenie logiky chýbajúce pole a triedenie naraz vykonané v komplexe. Akákoľvek pomoc bude vysoko cenená.

odpovede:

1 pre odpoveď č. 1

I "d, aby šablóny matice s prázdnymi záznamy v správnom poradí, potom iterovať nad ním a skontrolovať zdroj pole má rovnaké asociatívne prvky.

Ak existuje a nie je prázdna, prepíšte šablónupoložky so zdrojom. Ak je šablóna v poradí, ktoré potrebujete, na konci máte šablónu vyplnenú údajmi v správnom poradí a ak máte prázdne miesta, ktoré sú vyplnené prázdnymi údajmi šablóny.

<?php
$sourceWrongOrder = [];


$emptyRecord = [
"PL"       => "",
"Yield"    => "",
"YieldLS"  => "",
"Picks"    => "",
"Price"    => "",
"Stake"    => "",
"AvgStake" => "",
"AvgOdd"   => "",
];

$template = [
"1x2"            =>
[
"HOME"  => $emptyRecord,
"AWAY"  => $emptyRecord,
"TOTAL" => $emptyRecord,
],
"Asian Handicap" =>
[
"HOME"  => $emptyRecord,
"AWAY"  => $emptyRecord,
"TOTAL" => $emptyRecord,
],
"Over/Under"     =>
[
"OVER"  => $emptyRecord,
"UNDER" => $emptyRecord,
"TOTAL" => $emptyRecord,
]
];

foreach ($template as $name => &$items)
{
foreach ($items as $title => &$item)
{
if (isset($sourceWrongOrder[$name][$title]))
{
$item = $sourceWrongOrder[$name][$title]
}
}
}

Na konci sa vaša šablóna $ stáva správnym pokynom vyplneným správnymi údajmi.