我有以下数组,我想按
value
对子数组进行排序。
[
'bwin' => [
['bookie' => 'bwin', 'id_bookie' => 178537, 'value' => 6.00, 'bet' => 1],
['bookie' => 'bwin', 'id_bookie' => 178537, 'value' => 1.45, 'bet' => 2],
['bookie' => 'bwin', 'id_bookie' => 178537, 'value' => 4.50, 'bet' => 'x']
],
'NordicBet' => [
['bookie' => 'NordicBet', 'id_bookie' => 201581, 'value' => 5.75, 'bet' => 1],
['bookie' => 'NordicBet', 'id_bookie' => 201581, 'value' => 1.50, 'bet' => 2],
['bookie' => 'NordicBet', 'id_bookie' => 201581, 'value' => 4.30, 'bet' => 'x']
],
'Canbet' => [
['bookie' => 'Canbet', 'id_bookie' => 176582, 'value' => 5.60, 'bet' => 1],
['bookie' => 'Canbet', 'id_bookie' => 176582, 'value' => 1.56, 'bet' => 2],
['bookie' => 'Canbet', 'id_bookie' => 176582, 'value' => 3.80, 'bet' => 'x']
],
'Expekt' => [
['bookie' => 'Expekt', 'id_bookie' => 235615, 'value' => 5.60, 'bet' => 1],
['bookie' => 'Expekt', 'id_bookie' => 235615, 'value' => 1.50, 'bet' => 2],
['bookie' => 'Expekt', 'id_bookie' => 235615, 'value' => 4.25, 'bet' => 'x']
],
'StanJames' => [
['bookie' => 'StanJames', 'id_bookie' => 243649, 'value' => 5.50, 'bet' => 1],
['bookie' => 'StanJames', 'id_bookie' => 243649, 'value' => 1.53, 'bet' => 2],
['bookie' => 'StanJames', 'id_bookie' => 243649, 'value' => 4.00, 'bet' => 'x']
],
'Gamebookers' => [
['bookie' => 'Gamebookers', 'id_bookie' => 203620, 'value' => 5.00, 'bet' => 1],
['bookie' => 'Gamebookers', 'id_bookie' => 203620, 'value' => 1.50, 'bet' => 2],
['bookie' => 'Gamebookers', 'id_bookie' => 203620, 'value' => 4.25, 'bet' => 'x']
],
'Tipp3' => [
['bookie' => 'Tipp3', 'id_bookie' => 292604, 'value' => 4.10, 'bet' => 1],
['bookie' => 'Tipp3', 'id_bookie' => 292604, 'value' => 1.50, 'bet' => 2],
['bookie' => 'Tipp3', 'id_bookie' => 292604, 'value' => 3.40, 'bet' => 'x']
]
];
这是未排序的数组输出,但我想对行为2的数组进行排序,但行会改变,有时我必须对行为x或1的位置进行排序。
usort
。这是一个小片段。您可以在这个功能中做很多您想做的事情。
function sorting_function($x, $y)
{
if ($x['value'] == $y['value'])
return 0;
else if ($x['value'] < $y['value'])
return -1;
else
return 1;
}
usort($table_array, 'sorting_function');
该数据看起来是制表符分隔的。如果是,则根据制表符分割每一行并将其存储在数组中。从那里开始,扔掉空单元格就很简单了。自定义排序函数接受这些数组的数组,以及要排序的列的 int(表示列号的索引)也应该很容易从那里完成。
迭代集合并通过引用修改行。
调用
usort()
按 value
列值对子集进行排序。
代码:(演示)
foreach ($array as &$row) {
usort($row, fn($a, $b) => $b['value'] <=> $a['value']);
}
var_export($array);