配列が受け取れないのはなぜなのでしょうか?
カレンダーの日付にリンクをさせようとしているのですが、上手くできません。
リンクさせたい日付をforeachで配列として渡そうと思うのですが、
受け取ってくれません。
なぜ、受け取ることができないのでしょうか?
何が間違っているのでしょうか。
どなたかご指摘、アドバイスなどお願いします。
以下コードです。
<?php
$qry = $_SERVER['QUERY_STRING'];
if( ereg( "^[0-9]{8}", $qry ) ){
$today = getdate( mktime( 0, 0, 0, substr( $qry,4,2 ), substr( $qry,6,2 ), substr( $qry,0,4 ) ) );
}else{
$today = getdate();
}
$f_today = getdate( mktime( 0, 0, 0, $today[mon], 1, $today[year] ) );
$prev_month = date( "Ymd", mktime( 0, 0, 0, $today[mon], 0, $today[year] ) );
$next_month = date( "Ymd", mktime( 0, 0, 0, $today[mon]+1, 1, $today[year] ) );
<table width=170><tr><td>
<table width=100%>
<tr><td colspan=7><a href="?<?= $prev_month ?>">≪ </a><?= $today[year] ?>年<?= $today[mon] ?>月 <a href="?<?= $next_month ?>"> ≫</a></td></tr>
<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>
<tr>
<?php
for ( $i=0; $i<$f_today[wday]; $i++ ) {
echo "<td></td>\n";
}
$day = 1;
while( checkdate( $today[mon], $day, $today[year] ) ){
$link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day );
if( $link == 20081014 ){ //← 日付を指定※ここが問題の箇所です。
echo "<td><a href=?date=$link\">$day</a></td>\n";
}else{
echo "<td>$day</td>\n";
}
if( $f_today[wday] == 6) echo "</tr><tr>";
$day++;
$f_today[wday]++;
$f_today[wday] = $f_today[wday] % 7;
}
if( $f_today[wday] > 0 ){
while( $f_today[wday] < 7 ) {
echo "<td> </td>\n";
$f_today[wday]++;
}
} else {
echo "<td colspan=7></td>\n";
}
?>
</tr>
</table>
</td></tr></table>
下記のように日付を配列にするとダメです。
$day = 1; //以下を変更
$data = array( "200810005", "200810010", "20081011", "20081015", "20081025", "20081030" );
foreach( $data as $value ) {
$val = $value;
while( checkdate( $today[mon], $day, $today[year] ) ){
$link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day );
if( $link == $val ){ // ← 配列で代入※配列として受け取ってくれない。
echo "<td><a href=?date=$link\">$day</a></td>\n";
}else{
echo "<td>$day</td>\n";
}
if( $f_today[wday] == 6) echo "</tr><tr>";
$day++;
$f_today[wday]++;
$f_today[wday] = $f_today[wday] % 7;
}
}
↑ここまで
なぜ、できないのかが分からないので、色々試しても上手くいきません。
宜しくお願いします。
お礼
ご回答ありがとうございました。 つぎはぎだらけのスクリプトな上、説明が分かりにくくて申し訳ございませんでした。 自分なりに工夫をして、array_diff()使って出来ました。 ありがとうございました。