Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改数组的顺序以匹配一天中的小时数_Php_Arrays - Fatal编程技术网

Php 更改数组的顺序以匹配一天中的小时数

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-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, 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())