Php 具有特定要求的关联数组排序
我动态创建了以下数组Php 具有特定要求的关联数组排序,php,arrays,Php,Arrays,我动态创建了以下数组 Array ( [1x2] => Array ( [AWAY] => Array ( [PL] => 1.6 [Yield] => 19.4 [YieldLS] => 19.4 [Picks] => 8 [Price] =>
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
)
)
)
我想要的是根据具体要求对其进行排序。例如,我需要输出为
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
)
)
)
第一级1x2
应该是第一项,然后是Asian disability
和最后一项Over/Under
。同样地,在1x2
和disability
中,第二级应该是主场、平局、客场和全场
。在上/下
第二级中为上下,然后为总计
。对于缺少的任何项/元素,我需要添加空记录/数组。元素
和键
的数量始终是固定的
失踪案例可能是这样的
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
)
)
)
我曾尝试使用单独的数组进行排序,但将缺少数组和排序的逻辑同时放在复杂的位置。任何帮助都将不胜感激。我将以正确的顺序创建一个包含空记录的模板数组,然后对其进行迭代,并检查源数组是否具有相同的关联元素 如果模板项存在且不为空,请使用源替代该模板项。 如果模板是按您需要的顺序排列的,那么最后您将有一个按正确顺序填充数据的模板,如果您有空格,则将填充模板的空数据
<?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]
}
}
}
添加了一些示例代码,但没有经过测试,您能验证一下吗?让我试试。