Php 更改数组的顺序以匹配一天中的小时数
我有一个数组,其中列出了一天中的所有小时,0-23,如下所示:Php 更改数组的顺序以匹配一天中的小时数,php,arrays,Php,Arrays,我有一个数组,其中列出了一天中的所有小时,0-23,如下所示: [0] = 0 [1] = 1 [2] = 2 .... etc 然后我使用date('G')来查找当前的小时数,例如,17 我要做的是对数组重新排序,让它从下一个小时开始,18,然后19,20,21,22,23,0,1,2。。等 最好的方法是什么?我将此数组馈送到一个图表中,该图表显示了一段时间内的数据,并且按此顺序排列确实会使事情变得更简单。这应该可以: $array = array(0, 1, 2, 3, 4, 5, 6,
[0] = 0 [1] = 1 [2] = 2 .... etc
然后我使用date('G')来查找当前的小时数,例如,17
我要做的是对数组重新排序,让它从下一个小时开始,18,然后19,20,21,22,23,0,1,2。。等
最好的方法是什么?我将此数组馈送到一个图表中,该图表显示了一段时间内的数据,并且按此顺序排列确实会使事情变得更简单。这应该可以:
$array = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23);
for($i = 0; $i < date("G"); $i++)
array_push($array, array_shift($array));
print_r($array);
这应该起作用:
$array = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23);
for($i = 0; $i < date("G"); $i++)
array_push($array, array_shift($array));
print_r($array);
那你就做吧
$hours = range(0,23);
rearrangeHours($hours, 15);
那你就做吧
$hours = range(0,23);
rearrangeHours($hours, 15);
我用
无限迭代器和有限迭代器找到了一个很好的解决方案。
您不需要更改数组。您可以直接使用迭代器
$array = range(0, 23);
$start = date("G") + 1;
$count = 24;
$infinate = new InfiniteIterator(new ArrayIterator($array));
$limit = new LimitIterator($infinate, $start, $count);
然后您可以像使用数组一样使用$limit
foreach ($limit as $value) {
print($value . PHP_EOL);
}
我用无限迭代器和有限迭代器找到了一个很好的解决方案。
您不需要更改数组。您可以直接使用迭代器
$array = range(0, 23);
$start = date("G") + 1;
$count = 24;
$infinate = new InfiniteIterator(new ArrayIterator($array));
$limit = new LimitIterator($infinate, $start, $count);
然后您可以像使用数组一样使用$limit
foreach ($limit as $value) {
print($value . PHP_EOL);
}
你在那个时间拼接它,然后把它移到前面。你正在试着旋转一个阵列。这就是它的名字。看看你需要初始数组做什么?找到当前小时数,然后直接生成所需的最终数组$result=array\u merge(range($currentHour,23),$currentHour?range(0,$currentHour-1):array())
您在该小时拼接它,然后将它移到前面。您正在尝试旋转数组。这就是它的名字。看看你需要初始数组做什么?找到当前小时数,然后直接生成所需的最终数组$result=array\u merge(范围($currentHour,23),$currentHour?范围(0,$currentHour-1):array())