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)
请帮忙.
以下代码不使用任何排序函数.换句话说..在此上下文中不需要排序.
<?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)
使用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)