PHP
格式:$salesData["suppliers"][$supplierkey]['sales'][$salesPeriod]['sales']
我想排序(描述):
键 $salesData["suppliers"][$supplierkey] 由 $salesData["suppliers"][$supplierkey]['sales'][0]['cost'] 中填充的数值
所以在这个例子中:
$salesData["供应商"][董] $salesData["供应商"][丁]
将更改为:
$salesData["供应商"][丁] $salesData["供应商"][董]
因为
$salesData["供应商"][丁][销售额][0][成本] = 231.0600 $salesData["供应商"][Dong][销售额][0][成本] = 92.8900
是否可以在多维数组上完成
我想我需要如何使用 array_multisort ?
如有任何建议,我们将不胜感激
Array
(
[suppliers] => Array
(
[Dong] => Array
(
[ID] => 3663313744756234943
[sales] => Array
(
[0] => Array
(
[cost] => 92.8900
[sales] => 180.869565
)
[1] => Array
(
[cost] => 12.9900
[sales] => 394.782609
)
[locations] => Array
(
[salesRow] => 18
[costRow] => 19
[GPRow] => 20
[marginRow] => 21
[pSalesChangeRow] => 22
[pGPChangeRow] => 23
[ptotalSalesRow] => 24
[ptotalGPRow] => 25
)
)
)
[Ding] => Array
(
[ID] => 3678436471493790070
[sales] => Array
(
[0] => Array
(
[cost] => 231.0600
[sales] => 95.565217
)
[1] => Array
(
[cost] => 26.8200
[sales] => 85.130435
)
[locations] => Array
(
[salesRow] => 28
[costRow] => 29
[GPRow] => 30
[marginRow] => 31
[pSalesChangeRow] => 32
[pGPChangeRow] => 33
[ptotalSalesRow] => 34
[ptotalGPRow] => 35
)
)
)
)
)
本网站上的其他示例显示了 1 级向下排序,但没有显示多级向下排序。
我试过了:
Foreach($salesData["suppliers"] as $supplierkey=>$id){
$keys = array_column($salesData["suppliers"], 'cost');
array_multisort($keys, SORT_ASC, $new);
var_dump($new);
die();
}
但它提供了一个我认为我没有得到的错误:“成本”对吗?
这应该很容易。首先,将所有 costs
存储在一个数组中,然后对该
costs
数组进行 排序。现在根据已排序的 suppliers
数组重新排序主
costs
数组。
类似以下内容:
function sortByCost($salesData)
{
// Storing the costs
$costs = [];
foreach ($salesData["suppliers"] as $supplierKey => $supplierData) {
$costs[$supplierKey] = $supplierData["sales"][0]["cost"];
}
// Sort the costs array
arsort($costs);
// Reordering the suppliers based on the sorting of cost array keys
$sortedSuppliers = [];
foreach ($costs as $supplierKey => $cost) {
$sortedSuppliers[$supplierKey] = $salesData["suppliers"][$supplierKey];
}
$salesData["suppliers"] = $sortedSuppliers;
return $salesData;
}