Foreach循环数组键前后的值

时间:2013-08-16 00:38:43

标签: php

我有这段代码。

<?php 
$starttime = '5';
$endtime = '17';
$timings = array(
     '0' => '12AM',
     '1' => '1AM',
     '2' => '2AM',
     '3' => '3AM',
     '4' => '4AM',
     '5' => '5AM',
     '6' => '6AM',
     '7' => '7AM',
     '8' => '8AM',
     '9' => '9AM',
     '10' => '10AM',
     '11' => '11AM',
     '12' => '12PM',
     '13' => '1PM',
     '14' => '2PM',
     '15' => '3PM',
     '16' => '4PM',
     '17' => '5PM',
     '18' => '6PM',
     '19' => '7PM',
     '20' => '8PM',
     '21' => '9PM',
     '22' => '10PM',
     '23' => '11PM',
    );

 foreach ($timings as $t) {

 }
 ?>

我想在foreach循环中传递时间。

但在传递到foreach循环之前,我想调整开始时间和结束时间之间的时间。

此处我的开始时间键为5。结束时间键为17

所以我想从数组中删除5,6,7,8,9,10,11,12,13,14,15,16,17,并希望保留其余部分。

有人可以告诉我如何弹出它吗?

1 个答案:

答案 0 :(得分:4)

切片和合并

只需使用array_slicearray_merge,就像这样:

$starttime = '5';
$endtime = '17';

$timings = array_merge(
              array_slice($timings, 0, intval($starttime)),
              array_slice($timings, intval($endtime) + 1)
           );

<强>熔接

使用array_splice的另一种更简单且(效率更低)更有效的方法。请注意,它返回提取的数组更改原始数组,因此将结果放在$ timing中。

$starttime = '5';
$endtime = '17';

array_splice($timings,
             intval($starttime),
             (intval($endtime) - intval($starttime))
            );