我有一个数组,其中以星期几作为关键字(Mon,Tue等)。在进行循环时,我想在特定的一天开始,然后继续整个循环,这样我就能度过所有的日子。有关如何做到这一点的任何想法?
答案 0 :(得分:1)
编辑:错过了您需要按键搜索。以下应该有效:
$days = array('wed' => 2, 'thu' => 3, 'fri' => 4, 'sat' => 5, 'sun' => 6, 'mon' => 0, 'tue' => 1);
if ($off = array_search('mon', array_keys($days))) {
$result = array_merge(array_slice($days, $off, null, true), array_slice($days, 0, $off, true));
echo print_r($result, true);
}
/*
Array
(
[mon] => 0
[tue] => 1
[wed] => 2
[thu] => 3
[fri] => 4
[sat] => 5
[sun] => 6
)
*/
说明:使用array_keys
查找目标数组中键的数字索引。然后使用array_merge
和array_splice
将数组切割成两部分,从索引到数组末尾的所有内容以及从索引开始到索引之前的所有内容。
答案 1 :(得分:0)
使用for循环:
//there are 7 days of the week, 0-6 in an array
$days = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
$startIndex = 4; //the INDEX day we are starting at
$offset = 0;
//loop through 7 times regardless
for($i=0; $i<7; $i++){
$dayIndex = $startIndex+$offset;
echo $days[$dayIndex]; //day we want
if($dayIndex == 6){ //we want to start from the beginning
$offset = $startIndex * -1; //multiply by -1 so $startIndex+$offset will eval to 0
}else{
$offset++;
}
}
答案 2 :(得分:-1)
如果您只想从特定索引进行迭代,请尝试
$days = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
foreach (array_slice($days, 2) as $day)
echo($day . "\n");
它将从索引2迭代到最后一项。它可以与任何键完全相同。