我想对工作日数组进行排序,当天是数组中的第一个元素。
当天:
$day=date("l");
$ day给了我星期四
输入:
Array
(
[0] => Wednesday 9:30AM-6PM
[1] => Thursday 9:30AM-9PM
[2] => Friday 9:30AM-7PM
[3] => Saturday 9AM-6PM
[4] => Sunday 10AM-6PM
[5] => Monday 9:30AM-6PM
[6] => Tuesday 9:30AM-6PM
)
输出:
Array
(
[0] => Thursday 9:30AM-9PM
[1] => Friday 9:30AM-7PM
[2] => Saturday 9AM-6PM
[3] => Sunday 10AM-6PM
[4] => Monday 9:30AM-6PM
[5] => Tuesday 9:30AM-6PM
[6] => Wednesday 9:30AM-6PM
)
答案 0 :(得分:1)
你可以这样做: -
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$day=date("l");
$data = Array
(
'0' => 'Wednesday 9:30AM-6PM',
'1' => 'Thursday 9:30AM-9PM',
'2' => 'Friday 9:30AM-7PM',
'3' => 'Saturday 9AM-6PM',
'4' => 'Sunday 10AM-6PM',
'5' => 'Monday 9:30AM-6PM',
'6' => 'Tuesday 9:30AM-6PM'
);
$new_date_array = array();
$count = count($data);
foreach($data as $key=> $dat){
if(strpos($dat, $day) !== false){ // get the key where input day matched
for ($i =$key; $i<$count;$i++){ // add next all records to the new array till the end of the original array
if(isset($data[$i])){
$new_date_array[] = $data[$i];
}
}
for ($j=0; $j<=$key-1;$j++){ // add previous one before the matched key to the new array
if(isset($data[$j])){
$new_date_array[] = $data[$j];
}
}
}
}
echo "<pre/>";print_r($new_date_array);
输出: -
Array
(
[0] => Thursday 9:30AM-9PM
[1] => Friday 9:30AM-7PM
[2] => Saturday 9AM-6PM
[3] => Sunday 10AM-6PM
[4] => Monday 9:30AM-6PM
[5] => Tuesday 9:30AM-6PM
[6] => Wednesday 9:30AM-6PM
)
另外一项输出(当我手动更改一天进行比较时): - https://eval.in/633102
答案 1 :(得分:1)
你可以用你的时间做一个额外的数组。
$day=date("l");
$timeArray = array(
"Monday" => "9:30AM-6PM",
"Tuesday" => "9:30AM-6PM",
"Wednesday" => "9:30AM-6PM",
"Thursday" => "9:30AM-9PM",
"Friday" => "9:30AM-7PM",
"Saturday" => "9AM-6PM",
"Sunday" => "10AM-6PM"
);
然后您可以使用$day
$timestamp = strtotime($day);
$days = array();
for ($i = 0; $i < 7; $i++) {
$dayname = strftime('%A', $timestamp);
$days[] = $dayname." ".$timeArray[$dayname];
$timestamp = strtotime('+1 day', $timestamp);
}
输出:
array(7) {
[0]=>
string(19) "Thursday 9:30AM-9PM"
[1]=>
string(17) "Friday 9:30AM-7PM"
[2]=>
string(16) "Saturday 9AM-6PM"
[3]=>
string(15) "Sunday 10AM-6PM"
[4]=>
string(17) "Monday 9:30AM-6PM"
[5]=>
string(18) "Tuesday 9:30AM-6PM"
[6]=>
string(20) "Wednesday 9:30AM-6PM"
}
答案 2 :(得分:0)
这会将项目从开始移动到结尾。这就是你追求的吗?你的问题有点令人困惑。希望这会有所帮助:)
$array = ["m", "t", "w", "t", "f", "s", "s"];
$array[6] = array_shift($array);
print_r($array);
输出
Array ( [0] => t [1] => w [2] => t [3] => f [4] => s [5] => s [6] => m )
答案 3 :(得分:0)
您可以使用$day=date("w")
,在您的示例中将星期四将$day
设置为4。以某种方式创建你的基础数组,星期日是在索引0,星期一在1,...和星期六在6。
现在,您可以通过从$day
循环到$day + 6
并从源数组中选择索引($day + $i) % 7
,将项目复制到输出数组中。
答案 4 :(得分:0)
在这里:参考$lookup
$a = array('monday 123','tuesday 874','saturday 889', 'Thursday 123');
$b = array_filter($a, function($val){
if(strpos($val, date("l")) !== false) {
return $val;
}
});
$i = key($b);
$arr2 = array_merge(array_slice($a, $i), array_slice($a, 0, $i));
print_r($arr2);
数组([0] =&gt;星期四123 [1] =&gt;星期一123 [2] =&gt;星期二874 [3] =&gt;星期六889)
我在这里所做的是将你想要的那天作为第一个元素过滤,并将其数字索引作为refrerence来重新生成输出。