この投稿を読んでくれてありがとうと言って始めたいと思います。私は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
今日 (この場合は 6/2 日) を最初に表示し、次に次の 6 日間を順番に表示しようとしています。
print_r を使用して生の出力を表示すると、次のようになります。
配列 ( [1370239200] => 配列 ( [日] => 月曜日 [略語] => 月 ) [1370325600] => 配列 ( [日] => 火曜日 [略語] => 火 ) [1370412000] => 配列 ( [日] => 水曜日 [略語] => 水 ) [1370498400] => 配列 ( [日] => 木曜日 [略語] => 木 ) [1370584800] => 配列 ( [日] => 金曜日 [略語] => 金 ) [1370671200] => 配列 ( [日] => 土曜日 [略語] => 土 ) [1370757600] => 配列 ( [日] => 日曜日 [略語] => 太陽 ) )
日曜日のタイム スタンプが他の日よりも大きくなっていますが、これは何らかの理由で今日のタイム スタンプではなく次の日曜日のタイム スタンプが出力されているためですか?
最初は、毎日 2 つの 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')));
}
?>
これを達成し、正しい順序でソートするために配列を作成するより良い方法はありますか? 既に作成した配列で単純なものが不足していますか?
あなたが提供できるどんな助けも大歓迎です。
ありがとうございました。