Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP7中使用子数组键值对关联数组进行排序_Php_Arrays_Sorting - Fatal编程技术网

如何在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);