如何在php中对多数组进行排序

如何在php中对多数组进行排序,php,arrays,Php,Arrays,我有一个多维数组,我想在每个数组嵌套数组中基于SequenceID排序数组,基于序列号,如1,2,3,4,5,6,如SequenceID数据显示。如何做到这一点请任何人在这方面的帮助。 我的数组数据如下 <?php $dataarray= array( "CAR_DATA" => array( "SNo" => 1607, "SRRequestID" => 22666

我有一个多维数组,我想在每个数组嵌套数组中基于SequenceID排序数组,基于序列号,如1,2,3,4,5,6,如SequenceID数据显示。如何做到这一点请任何人在这方面的帮助。 我的数组数据如下

<?php

$dataarray=  array(

            "CAR_DATA" => array(
                   "SNo" => 1607,
                   "SRRequestID" => 22666,
                   "AncillarySearchID"=>3333,
                   "car_data_line" => array (
                           "QuoteID" => 1607,
                           "SequenceID" => 5
                        ) 
                     ),
            "FLIGHT_DATA" => array(
                "SNo" => 1212,
                "SRRequestID" => 2222,
                "FLightSearchID"=>3333,
                "flight_data_line" => array (
                        "QuoteID" => 3222,
                        "SequenceID" => 2
               )
             ),

            "FLIGHT_DATA" => array(
                    "SNo" => 3222,
                    "SRRequestID" => 2222,
                    "FLightSearchID"=>3333,
                    "flight_data_line" => array (
                            "QuoteID" => 3222,
                            "SequenceID" => 1
                   )
                 ),


            "HOTEL_DATA" => array(
                    "SNo" => 343,
                    "SRRequestID" => 212,
                    "HotelSearchID"=>3434,
                    "hotel_data_line" => array (
                        "QuoteID" => 456,
                        "SequenceID" => 3
                   )
                 ),

            "HOTEL_DATA" => array(
                    "SNo" => 32,
                    "SRRequestID" => 3333,
                    "HotelSearchID"=>343,
                    "hotel_data_line" => array (
                        "QuoteID" => 121,
                        "SequenceID" => 6
                   )
                 ),

                 "HOTEL_DATA" => array(
                    "SNo" => 344,
                    "SRRequestID" => 34343,
                    "HotelSearchID"=>4433,
                    "hotel_data_line" => array (
                        "QuoteID" => 22222,
                        "SequenceID" => 4
                   )
                 ),

             );

        echo "<pre>";print_r($dataarray);
        ?>
 Original code 

    <?php 

    Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [flight_data] => stdClass Object
                            (
                                [0] => stdClass Object
                                    (
                                        [SNo] => 33052
                                        [Flight_Search_ID] => 32955
                                        [SR_Request_ID] => 44331
                                        [quote_flight_data] => Array
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [ID] => 11652
                                                        [ReqID] => 44331
                                                        [SearchID] => 32955
                                                        [QuoteID] => 3978
                                                        [SequenceID] => 5
                                                        [QuoteGeneratedID] => R44331-1464
                                                        [RequestID] => 44331
                                                    )
                                            )
                                    )
                            )
                        [QMergeId] => 
                        [BookingDate] => 
                    )

                [1] => Array
                    (
                        [flight_data] => stdClass Object
                            (
                                [0] => stdClass Object
                                    (
                                        [SNo] => 33052
                                        [Flight_Search_ID] => 32955
                                        [SR_Request_ID] => 44331
                                        [quote_flight_data] => Array
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [ID] => 11653
                                                        [ReqID] => 44331
                                                        [SearchID] => 32955
                                                        [QuoteID] => 3979
                                                        [SequenceID] => 3
                                                        [QuoteGeneratedID] => R44331-1464
                                                        [RequestID] => 44331
                                                    )
                                            )
                                    )
                            )
                        [QMergeId] => 
                        [BookingDate] => 
                    )

                [2] => Array
                    (
                        [flight_data] => stdClass Object
                            (
                                [0] => stdClass Object
                                    (
                                        [SNo] => 33052
                                        [Flight_Search_ID] => 32955
                                        [SR_Request_ID] => 44331
                                        [quote_flight_data] => Array
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [ID] => 11652
                                                        [ReqID] => 44331
                                                        [SearchID] => 32955
                                                        [QuoteID] => 3980
                                                        [SequenceID] => 2
                                                        [QuoteGeneratedID] => R44331-1464
                                                        [RequestID] => 44331
                                                    )
                                            )
                                    )
                            )
                        [QMergeId] => 
                        [BookingDate] => 20200317
                    )

                [3] => Array
                    (
                        [flight_data] => stdClass Object
                            (
                                [0] => stdClass Object
                                    (
                                        [SNo] => 33052
                                        [Flight_Search_ID] => 32955
                                        [SR_Request_ID] => 44331
                                        [quote_flight_data] => Array
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [ID] => 11653
                                                        [ReqID] => 44331
                                                        [SearchID] => 32955
                                                        [QuoteID] => 3981
                                                        [SequenceID] => 6
                                                        [QuoteGeneratedID] => R44331-1464
                                                        [RequestID] => 44331
                                                    )
                                            )
                                    )

                            )
                        [QMergeId] => 
                        [BookingDate] => 20200317
                    )

                [4] => Array
                    (
                        [hotel_data] => stdClass Object
                            (
                                [0] => stdClass Object
                                    (
                                        [hid] => 16014
                                        [SNo] => 16019
                                        [Hotel_Search_ID] => 16014
                                        [SR_Request_ID] => 44331
                                        [quote_hotel_data] => stdClass Object
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [QuoteID] => 3943
                                                        [SequenceID] => 1
                                                        [QuoteGeneratedID] => R44331-1464
                                                        [RequestID] => 44331
                                                        [SearchID] => 16014
                                                    )
                                            )
                                    )
                            )
                        [QMergeId] => 
                        [BookingDate] => 20200317
                    )

                [5] => Array
                    (
                        [hotel_data] => stdClass Object
                            (
                                [0] => stdClass Object
                                    (
                                        [hid] => 16014
                                        [SNo] => 16019
                                        [Hotel_Search_ID] => 16014
                                        [SR_Request_ID] => 44331
                                        [quote_hotel_data] => stdClass Object
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [QuoteID] => 3944
                                                        [SequenceID] => 4
                                                        [QuoteGeneratedID] => R44331-1464
                                                        [RequestID] => 44331
                                                        [SearchID] => 16014
                                                    )
                                            )
                                    )
                            )
                        [QMergeId] => 
                        [BookingDate] => 20200317
                    )

            )

    )

    ?>

假设您能够按照这种方式制作阵列。因为在数组中有重复的键。您不能保留密钥,因为PHP将保留最后一个密钥。因此,您的阵列应采用以下方式:

<?php

function sortArrayBySequenceID($array) {

    $new = [];

    foreach ($array as $key => $value) {

        if (isset($value['CAR_DATA']['car_data_line']['SequenceID'])) {
            $new[$value['CAR_DATA']['car_data_line']['SequenceID']] = $array[$key];
        } elseif (isset($value['FLIGHT_DATA']['flight_data_line']['SequenceID'])) {
            $new[$value['FLIGHT_DATA']['flight_data_line']['SequenceID']] = $array[$key];
        } elseif (isset($value['HOTEL_DATA']['hotel_data_line']['SequenceID'])) {
            $new[$value['HOTEL_DATA']['hotel_data_line']['SequenceID']] = $array[$key];
        }

    }

    // Sorts the newly made array based on key
    ksort($new);

    return $new;
}

print_r(sortArrayBySequenceID($dataArray));

我无法理解排序顺序,使用哪个索引值对数据进行排序,以及排序顺序是什么
asc
desc
?我的原始代码已在上面编辑,请在我的原始代码中使用SequenceID进行检查和搜索,基于序列号,如1,2,3,4,5..数据需要显示原始数据的问题是,您有多个项目具有相同的键(
FLIGHT_data
),因此这将不起作用。
print\r($dataarray)仅显示3项数据,其他数据因您的数据被覆盖而丢失。@NigelRen您所说的完全正确,是的,我有多个具有相同键的项目,如
航班数据
酒店数据
汽车数据
。这个问题的解决方案是什么。但我的经理强迫我在最后两天继续工作。我必须而且应该做任何其他的解决方案。你能改变你如何生成这个数组吗?谢谢它的工作,但我想从我的原始数据。你能在我的帖子里查一下我的原始数据吗?我想知道数据的结果。请在此方面提供帮助。您的原始数据可能是打印($some_变量)
的结果。你能用这个片段显示数据吗?
foreach($qq为原始数据){foreach($q为$q){$array=json_decode(json_encode($q),true);echo”“;print_r($array);echo”“;}}
使用上述代码打印此数据。我得到下面的代码片段,请在我的问题中检查更新的原始输出原始数据输出JSON编码和解码后请检查此链接
$array= Array
(
    [flight_data] => Array
        (
            [0] => Array
                (
                    [SNo] => 32999
                    [Flight_Search_ID] => 32902
                    [SR_Request_ID] => 44232
                    [quote_flight_data] => Array
                        (
                            [0] => Array
                                (
                                    [ID] => 11537
                                    [ReqID] => 44232
                                    [SearchID] => 32902
                                    [QuoteID] => 3921
                                    [SequenceID] => 2
                                    [QuoteGeneratedID] => R44232-1426
                                    [RequestID] => 44232
                                )
                        )
                )
        )
    [QMergeId] => 
    [BookingDate] => 20200416
)


Array
(
    [flight_data] => Array
        (
            [0] => Array
                (
                    [SNo] => 32999
                    [Flight_Search_ID] => 32902
                    [SR_Request_ID] => 44232
                    [quote_flight_data] => Array
                        (
                            [0] => Array
                                (
                                    [ID] => 11537
                                    [ReqID] => 44232
                                    [SearchID] => 32902
                                    [QuoteID] => 3921
                                    [SequenceID] => 1
                                    [QuoteGeneratedID] => R44232-1426
                                    [RequestID] => 44232
                                )
                        )
                )
        )
    [QMergeId] => 
    [BookingDate] => 20200416
)

Array
(
    [hotel_data] => Array
        (
            [0] => Array
                (
                    [SNo] => 32999
                    [Flight_Search_ID] => 32902
                    [SR_Request_ID] => 44232
                    [quote_hotel_data] => Array
                        (
                            [0] => Array
                                (
                                    [ID] => 11537
                                    [ReqID] => 44232
                                    [SearchID] => 32902
                                    [QuoteID] => 3921
                                    [SequenceID] => 4
                                    [QuoteGeneratedID] => R44232-1426
                                    [RequestID] => 44232
                                )
                        )
                )
        )
    [QMergeId] => 
    [BookingDate] => 20200416
)

Array
(
    [hotel_data] => Array
        (
            [0] => Array
                (
                    [SNo] => 32999
                    [Flight_Search_ID] => 32902
                    [SR_Request_ID] => 44232
                    [quote_hotel_data] => Array
                        (
                            [0] => Array
                                (
                                    [ID] => 11537
                                    [ReqID] => 44232
                                    [SearchID] => 32902
                                    [QuoteID] => 3921
                                    [SequenceID] => 3
                                    [QuoteGeneratedID] => R44232-1426
                                    [RequestID] => 44232
                                )
                        )
                )
        )
    [QMergeId] => 
    [BookingDate] => 20200416
)

Array
(
    [car_data] => Array
        (
            [0] => Array
                (
                    [SNo] => 32999
                    [Flight_Search_ID] => 32902
                    [SR_Request_ID] => 44232
                    [quote_car_data] => Array
                        (
                            [0] => Array
                                (
                                    [ID] => 11537
                                    [ReqID] => 44232
                                    [SearchID] => 32902
                                    [QuoteID] => 3921
                                    [SequenceID] => 5
                                    [QuoteGeneratedID] => R44232-1426
                                    [RequestID] => 44232
                                )
                        )
                )
        )
    [QMergeId] => 
    [BookingDate] => 20200416
)
<?php

$dataArray=  array(
    array(
        "CAR_DATA" => array(
            "SNo" => 1607,
            "SRRequestID" => 22666,
            "AncillarySearchID"=>3333,
            "car_data_line" => array (
                "QuoteID" => 1607,
                "SequenceID" => 5
            )
        )
    ),
    array(
        "FLIGHT_DATA" => array(
            "SNo" => 1212,
            "SRRequestID" => 2222,
            "FLightSearchID"=>3333,
            "flight_data_line" => array (
                "QuoteID" => 3222,
                "SequenceID" => 2
            )
        )
    ),
    array(
        "FLIGHT_DATA" => array(
            "SNo" => 3222,
            "SRRequestID" => 2222,
            "FLightSearchID"=>3333,
            "flight_data_line" => array (
                "QuoteID" => 3222,
                "SequenceID" => 1
            )
        )
    ),
    array(
        "HOTEL_DATA" => array(
            "SNo" => 343,
            "SRRequestID" => 212,
            "HotelSearchID"=>3434,
            "hotel_data_line" => array (
                "QuoteID" => 456,
                "SequenceID" => 3
            )
        )
    ),
    array(
        "HOTEL_DATA" => array(
            "SNo" => 32,
            "SRRequestID" => 3333,
            "HotelSearchID"=>343,
            "hotel_data_line" => array (
                "QuoteID" => 121,
                "SequenceID" => 6
            )
        )
    ),
    array(
        "HOTEL_DATA" => array(
            "SNo" => 344,
            "SRRequestID" => 34343,
            "HotelSearchID"=>4433,
            "hotel_data_line" => array (
                "QuoteID" => 22222,
                "SequenceID" => 4
            )
        )
    ),
);
<?php

function sortArrayBySequenceID($array) {

    $new = [];

    foreach ($array as $key => $value) {

        if (isset($value['CAR_DATA']['car_data_line']['SequenceID'])) {
            $new[$value['CAR_DATA']['car_data_line']['SequenceID']] = $array[$key];
        } elseif (isset($value['FLIGHT_DATA']['flight_data_line']['SequenceID'])) {
            $new[$value['FLIGHT_DATA']['flight_data_line']['SequenceID']] = $array[$key];
        } elseif (isset($value['HOTEL_DATA']['hotel_data_line']['SequenceID'])) {
            $new[$value['HOTEL_DATA']['hotel_data_line']['SequenceID']] = $array[$key];
        }

    }

    // Sorts the newly made array based on key
    ksort($new);

    return $new;
}

print_r(sortArrayBySequenceID($dataArray));