Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
如何在PHP中对多维数组进行排序_Php_Arrays_Sorting - Fatal编程技术网

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

如何在PHP中对多维数组进行排序,php,arrays,sorting,Php,Arrays,Sorting,如何根据“time_slots”键的值对该数组进行排序?尽管这些值当前是连续的,但它们并不总是连续的。问题的给定解决方案中未涵盖此场景[时段]=>上午11:00-下午12:00。需要基于AM和PM作为值字符串的解决方案 Array ( [0] => Array ( [id] => 38 [time_slots] => 9:00 AM - 10:00 AM [cutt_off_tim

如何根据“time_slots”键的值对该数组进行排序?尽管这些值当前是连续的,但它们并不总是连续的。问题的给定解决方案中未涵盖此场景[时段]=>上午11:00-下午12:00。需要基于AM和PM作为值字符串的解决方案

 Array
(
    [0] => Array
        (
            [id] => 38
            [time_slots] => 9:00 AM - 10:00 AM
            [cutt_off_time] => 08:45 AM
        )

    [1] => Array
        (
            [id] => 39
            [time_slots] => 10:00 AM - 11:00 AM
            [cutt_off_time] => 09:45 AM
        )

    [2] => Array
        (
            [id] => 40
            [time_slots] => 11:00 AM - 12:00 PM
            [cutt_off_time] => 10:45 AM
        )

    [3] => Array
        (
            [id] => 41
            [time_slots] => 12:00 PM - 1:00 PM
            [cutt_off_time] => 11:45 AM
        )

    [4] => Array
        (
            [id] => 42
            [time_slots] => 1:00 PM - 2:00 PM
            [cutt_off_time] => 12:45 PM
        )

    [5] => Array
        (
            [id] => 43
            [time_slots] => 2:00 PM - 3:00 PM
            [cutt_off_time] => 01:45 PM
        )

    [6] => Array
        (
            [id] => 44
            [time_slots] => 2:30 PM - 6:00 PM
            [cutt_off_time] => 06:00 PM
        )

    [7] => Array
        (
            [id] => 45
            [time_slots] => 5:00 AM - 7:00 AM
            [cutt_off_time] => 05:30 AM
        )

    [8] => Array
        (
            [id] => 46
            [time_slots] => 5:00 PM - 8:00 PM
            [cutt_off_time] => 07:15 PM
        )
)

试试这个。但是您必须将时隙的值更改为更好的格式,这将帮助您获得正确的顺序

<?php

function sort_by_col(&$arr, $col) {
    $sorted = array();

    foreach ($arr as $key => $row) {
        $sorted[$key] = $row[$col];
    }

    array_multisort($sorted, SORT_REGULAR, $arr);
}

sort_by_col($arr, 'time_slots');

// Result
var_dump($arr);

相同的问题:问题的给定解决方案中不包括此场景。[时段]=>上午11:00-下午12:00。需要基于AM和PM作为字符串的解决方案。@NeerajSharma我有解决方案,但这个问题被标记为重复,所以我无法回答。您可以请求重新打开它