按工作日顺序对工作日键进行排序

Chi*_*iya 5 php arrays sorting

我希望按星期顺序对工作日键进行排序,如下所示:周一,周二,周三,周四,周五,周六.

给出这样的输入:

Array
(
  [Thursday] => 8
  [Friday] => 7
  [Monday] => 9
  [Tuesday] => 12
  [Wednesday] => 8
  [Saturday] => 17
)
Run Code Online (Sandbox Code Playgroud)

我想要一个这样的结果:

Array
(
  [Monday] => 9
  [Tuesday] => 12
  [Wednesday] => 8
  [thusday] => 8
  [friday] => 7
  [Saturday] => 17
)
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Sha*_*ran 7

以下代码不使用任何排序函数.换句话说..在此上下文中不需要排序.

<?php

//Your actual array...
$arr=Array (
    'Thursday' => 8,
    'Friday' => 7,
    'Monday' => 9,
    'Tuesday' => 12,
    'Wednesday' => 8,
    'Saturday' => 17
);

//This is the template array.. Changing this alters the output
$arr2=array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

//A simple loop that traverses all elements of the template...
foreach($arr2 as $v)
{
    //If the value in the template exists as a key in the actual array.. (condition)
    if(array_key_exists($v,$arr))
    {
        $arr4[$v]=$arr[$v]; //The value is assigned to the new array and the key of the actual array is assigned as a value to the new array
    }
}

//prints the new array
print_r($arr4);
Run Code Online (Sandbox Code Playgroud)

OUTPUT :

Array
(
    [Monday] => 9
    [Tuesday] => 12
    [Wednesday] => 8
    [Thursday] => 8
    [Friday] => 7
    [Saturday] => 17
)
Run Code Online (Sandbox Code Playgroud)


Mar*_*eed 5

使用uksort 这是一种方法:

$week_order = array_flip(array('Monday', 'Tuesday', 'Wednesday', 'Thursday',
                               'Friday', 'Saturday'));

$data = array('Thursday' => 8, 'Friday' => 7, 'Monday' => 9, 'Tuesday' => 12,
               'Wednesday' => 8, 'Saturday' => 17);

uksort($data, 
  function($a, $b) use ($week_order) { return $week_order[$a] - $week_order[$b]; });

print_r($data);
Run Code Online (Sandbox Code Playgroud)