如何在PHP7中使用子数组键值对关联数组进行排序
我想使用关联数组中的子数组键按升序对关联数组进行排序 下面是我的数组如何在PHP7中使用子数组键值对关联数组进行排序,php,arrays,sorting,Php,Arrays,Sorting,我想使用关联数组中的子数组键按升序对关联数组进行排序 下面是我的数组 Array ( [0] => Array ( [weight] => 5.6 [item_id] => wQsK0EpTSkAAAAFvOVohK1wK [item_reference] => M-AAH-960 [tracking_details] => Array
Array
(
[0] => Array
(
[weight] => 5.6
[item_id] => wQsK0EpTSkAAAAFvOVohK1wK
[item_reference] => M-AAH-960
[tracking_details] => Array
(
[article_id] => G4KZ00002482EXP00007
[consignment_id] => G4KZ00002482
[barcode_id] => G4KZ00002482EXP00007
)
[product_id] => exp
)
[1] => Array
(
[weight] => 19.2
[item_id] => wQsK0EpTSkAAAAFvOVohK1wK
[item_reference] => M-AAH-960
[tracking_details] => Array
(
[article_id] => G4KZ00002482EXP00002
[consignment_id] => G4KZ00002482
[barcode_id] => G4KZ00002482EXP00002
)
[product_id] => exp
)
[2] => Array
(
[weight] => 18.5
[item_id] => wQsK0EpTSkAAAAFvOVohK1wK
[item_reference] => M-AAH-960
[tracking_details] => Array
(
[article_id] => G4KZ00002482EXP00003
[consignment_id] => G4KZ00002482
[barcode_id] => G4KZ00002482EXP00003
)
[product_id] => exp
)
[3] => Array
(
[weight] => 19.3
[item_id] => wQsK0EpTSkAAAAFvOVohK1wK
[item_reference] => M-AAH-960
[tracking_details] => Array
(
[article_id] => G4KZ00002482EXP00006
[consignment_id] => G4KZ00002482
[barcode_id] => G4KZ00002482EXP00006
)
[product_id] => exp
)
)
我需要使用循环按升序排列的article\u id
值
输出将使用升序
article_id G4KZ00002482EXP00002
weight 19.2
article_id G4KZ00002482EXP00003
weight 18.5
article_id G4KZ00002482EXP00006
weight 19.3
article_id G4KZ00002482EXP00007
weight 5.6
我使用了下面的脚本,但没有给出正确的结果,返回错误
$result = array(
array('weight'=>5.6, 'item_id'=>'wQsK0EpTSkAAAAFvOVohK1wK','item_reference'=>'M-AAH-960',
'tracking_details'=>array('article_id'=>'G4KZ00002482EXP00007','consignment_id'=>'G4KZ00002482','barcode_id'=>'G4KZ00002482EXP00007'),
'product_id'=>'exp'
),
array('weight'=>19.2, 'item_id'=>'wQsK0EpTSkAAAAFvOVohK1wK','item_reference'=>'M-AAH-960',
'tracking_details'=>array('article_id'=>'G4KZ00002482EXP00002','consignment_id'=>'G4KZ00002482','barcode_id'=>'G4KZ00002482EXP00002'),
'product_id'=>'exp'
),
array('weight'=>18.5, 'item_id'=>'wQsK0EpTSkAAAAFvOVohK1wK','item_reference'=>'M-AAH-960',
'tracking_details'=>array('article_id'=>'G4KZ00002482EXP00003','consignment_id'=>'G4KZ00002482','barcode_id'=>'G4KZ00002482EXP00003'),
'product_id'=>'exp'
),
array('weight'=>19.3, 'item_id'=>'wQsK0EpTSkAAAAFvOVohK1wK','item_reference'=>'M-AAH-960',
'tracking_details'=>array('article_id'=>'G4KZ00002482EXP00006','consignment_id'=>'G4KZ00002482','barcode_id'=>'G4KZ00002482EXP00006'),
'product_id'=>'exp'
),
);
foreach ($result as $key => $value) {
echo $output = sort(array_column($result, 'article_id'));
}
我已经创建了一个实现,它提供您想要的输出
usort($result, function ( $a, $b) {
return ($a['tracking_details']['article_id'] <=> $b['tracking_details']['article_id']);
});
foreach($result as $item) {
print($item['tracking_details']['article_id'].PHP_EOL);
print($item['weight'].PHP_EOL);
print(PHP_EOL);
}
usort($result,function($a,$b){
退货($a['tracking_details']['article_id']$b['tracking_details']['article_id']);
});
foreach($result作为$item){
打印($item['tracking\u details']['article\u id'].PHP\u EOL);
打印($item['weight'].PHP\u EOL);
打印(PHP_EOL);
}
这使用usort和
来比较文章ID-s。显式usort的替代方法是将关键字映射到文章ID,然后使用数组\u multisort和映射。您可以对地图进行排序以对结果进行排序:
<?php
foreach($result as $k => $item)
$map[$k] = $item['tracking_details']['article_id'];
array_multisort($map, $result);