亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在保持名稱的同時按時間對數組進行排序

在保持名稱的同時按時間對數組進行排序

PHP
慕婉清6462132 2023-04-28 16:05:46
我有以下數組: Array ( [10] => 06:30pm [20] => 04:00pm [30] => 05:15pm )[]中的數字是id,后面的值是時間。我需要按時間對這個數組進行排序,同時像這樣維護 id數組([20] => 下午 4 點 00 分 [30] => 下午 5 點 15 分 [10] => 下午 6 點 30 分)另請注意,時間也可以是上午或下午。然后我需要將 [] 中的 id 提取為逗號分隔值。誰能幫忙?
查看完整描述

2 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

嘗試這個


<?php

$time= ['10' => '06:30pm','20' => '04:00pm', '30' => '05:15am'];

$temp_time=array();

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

    if(sizeof(explode("pm", $value))>1){

        $data=explode(":", $value);

        $data[0]=(int)$data[0]+12;

        $value=$data[0].':'.$data[1];


    }else{

        $data=explode(":", $value);

        if($data[0]=='12'){

            $value='00:'.$data[1];

        }else{

            $value=$data[0].':'.$data[1];

        }

    }

    $temp_time+=[$key => $value];

}

asort($temp_time);

$new_time=array();

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

    $new_time+=[$key => $time[$key]];

}

print_r($new_time);

輸出:


Array ( [30] => 05:15am [20] => 04:00pm [10] => 06:30pm )


查看完整回答
反對 回復 2023-04-28
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

這是解決方案:

$source_array = array(10 => '06:30pm', 20 => '04:00pm', 30 => '05:15pm', 40 => '04:00am');


function arr_swap_elements(&$arr, $a_index, $b_index) {

? ? $tmp = $arr[$a_index];

? ? $arr[$a_index] = $arr[$b_index];

? ? $arr[$b_index] = $tmp;

? ? return;

}


function arr_sort_by_time(&$source_array, $start_index = 0, $arr_keys = null, $arr_len = null) {

? ? if (is_null($arr_keys)) {

? ? ? ? $arr_keys = array_keys($source_array);

? ? }

? ? if (is_null($arr_len)) {

? ? ? ? $arr_len = count($source_array);

? ? }

? ? for ($i = $start_index; $i < $arr_len; $i++) {

? ? ? ? if ($i > 0) {

? ? ? ? ? ? if (strtotime($source_array[$arr_keys[$i]]) > strtotime($source_array[$arr_keys[$i - 1]])) {

? ? ? ? ? ? ? ? $was_swapped = true;

? ? ? ? ? ? ? ? arr_swap_elements($source_array, $arr_keys[$i], $arr_keys[$i - 1]);

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? if ($start_index + 1 < $arr_len) {

? ? ? ? arr_sort_by_time($source_array, $start_index + 1, $arr_keys, $arr_len);

? ? }

}


arr_sort_by_time($source_array);


var_dump($source_array);


查看完整回答
反對 回復 2023-04-28
  • 2 回答
  • 0 關注
  • 159 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號