【发布时间】:2013-05-29 00:29:54
【问题描述】:
首先,我想感谢您抽出宝贵时间阅读这篇文章。我希望有人能在我刚开始学习 PHP 时帮助我。如果我没有使用正确的术语来描述我的问题,请原谅我。
我在排序数组时遇到问题。
我的数组如下所示:
<?php
$rooms = array(
strtotime('next monday')=>array('day'=>'monday', 'abbrev'=>'Mon'),
strtotime('next tuesday')=>array('day'=>'tuesday', 'abbrev'=>'Tue'),
strtotime('next wednesday')=>array('day'=>'wednesday', 'abbrev'=>'Wed'),
strtotime('next thursday')=>array('day'=>'thursday', 'abbrev'=>'Thu'),
strtotime('next friday')=>array('day'=>'friday', 'abbrev'=>'Fri'),
strtotime('next saturday')=>array('day'=>'saturday', 'abbrev'=>'Sat'),
strtotime('next sunday')=>array('day'=>'sunday', 'abbrev'=>'Sun'));
ksort($rooms);
foreach($rooms as $room_timestamp=>$room_info) {
if (time() > strtotime($room_info['day'])) {
print ($form->checkBox($model,'space_'.$room_info['day'], array('value' => strtotime($room_info['day']))) . $form->labelEx($model,$room_info['abbrev'].' ' . date('n/j', strtotime($room_info['day']))) . '<br />');
} else {
print ($form->checkBox($model,'space_'.$room_info['day'], array('value' => strtotime('next '.$room_info['day']))) . $form->labelEx($model,$room_info['abbrev'].' ' . date('n/j', strtotime('next '.$room_info['day']))) . '<br />');
}
}
echo "<pre>".print_r($rooms,1)."</pre>";
?>
它按此顺序输出复选框:
6 月 3 日星期一
6 月 4 日星期二
6 月 5 日星期三
6 月 6 日星期四
6 月 7 日星期五
6 月 8 日星期六
6 月 2 日星期日
br>
我试图让今天(在本例中为 6 月 2 日)首先显示,然后在接下来的 6 天按顺序显示。
当我使用 print_r 显示原始输出时,它看起来像这样:
数组
(
[1370239200] => 数组
(
[日] => 星期一
[缩写] => 星期一
)
[1370325600] => 数组
(
[天] => 星期二
[缩写] => 星期二
)
[1370412000] => 数组
(
[日] => 星期三
[缩写] => 星期三
)
[1370498400] => 数组
(
[天] => 星期四
[缩写] => 星期四
)
[1370584800] => 数组
(
[日] => 星期五
[缩写] => 星期五
)
[1370671200] => 数组
(
[天] => 星期六
[缩写] => 星期六
)
[1370757600] => 数组
(
[日] => 星期日
[缩写] => 太阳
)
)
周日显示的时间戳比其他日子大,这是因为它以某种方式输出下周日的时间戳而不是今天的时间戳吗?
最初,我每天使用两个 if/else 语句创建复选框和标签。无法以这种方式对它们进行排序,我试图创建一个数组,这就是我现在遇到的问题。
我的原始代码(此示例适用于星期二)如下所示:
<?php
if (time() > strtotime('tuesday'))
{
echo $form->checkBox($model,'space_tuesday', array('value' => strtotime('tuesday')));
}
else
{
echo $form->checkBox($model,'space_tuesday', array('value' => strtotime('next tuesday')));
}
?>
<?php
if (time() > strtotime('tuesday'))
{
echo $form->labelEx($model,'Tues ' . date('n/j', strtotime('tuesday')));
}
else
{
echo $form->labelEx($model,'Tues ' . date('n/j', strtotime('next tuesday')));
}
?>
有没有更好的方法来创建一个数组来实现这一点并按正确的顺序排序?我已经创建的数组是否缺少一些简单的东西?
如果您能提供任何帮助,我们将不胜感激。
谢谢。
【问题讨论】: