我对PHP很陌生,我有一个数组,我希望它每周一旋转一次,我想要做的是显示这个数组中的前5个条目,然后每个星期一将它向前推一。
到目前为止,这就是我想出来的
$monday = array("James", "George", "Rob", "Martin", "Arthur", "Bob", "Tom",
"Julie");
array_push($monday, array_shift($monday));
echo $monday[1], $monday[2], $monday[3], $monday[4], $monday[5];因此,这周它将显示,例如
然后第二周它会显示
这样就会一直这样下去!
有什么想法吗?
发布于 2017-05-03 09:14:28
如果你想在全球范围内使用,
function array_rotate($array, $shift)
{
if (!is_array($array) || !is_numeric($shift)) {
if (!is_array($array)) {
error_log(__FUNCTION__ . ' expects first argument to be array; ' . gettype($array) . ' received.');
}
if (!is_numeric($shift)) {
error_log(__FUNCTION__ . ' expects second argument to be numeric; ' . gettype($shift) . " `$shift` received.");
}
return $array;
}
$shift %= count($array); //we won't try to shift more than one array length
if ($shift < 0) {
$shift += count($array);
}
//handle negative shifts as positive
return array_slice(array_merge(array_slice($array, $shift, null, true), array_slice($array, 0, $shift, true)), 0, 5, true);
}
$monday = array("James", "George", "Rob", "Martin", "Arthur", "Bob", "Tom",
"Julie");
$monday = array_rotate($monday, 4); // 4 is number to be shifted
print_r($monday);这是工作的代码。
发布于 2017-05-03 09:11:19
如果我不理解这个问题,这可能是你想要的。
$timestamp = time();
if(date('D', $timestamp) === 'Mon') {
$temp = $monday[0];
for($i=0;$i<=sizeof($monday)-1;$i++) {
$monday[$i] = $monday[$i+1];
}
$monday[sizeof($monday)-1] = $temp;
}发布于 2017-05-03 09:16:12
//Array Declaration
$array = array("Name1", "Name2", "Name3", "Name4", "Name5", "Name6");
//Shift First element to end and display.
array_push($array, $array[0]);
unset($array[0]);
$array = array_values($a);
echo $array[0].$array[1].$array[2].$array[3].$array[4];只需将数组的第一个元素添加到末尾,然后取消第一个值并重置索引。
如果你每个星期一都在问如何做这件事,那么你应该看看如何让一个Cron作业每天运行,并使用Lenox描述的方法来检查是否是星期一。这样,每天它都会检查是否是星期一,并按你的意愿旋转数组。或者,您可以每周运行Cron作业。
https://stackoverflow.com/questions/43755648
复制相似问题