[PHP]一年分の日付を曜日付きで一覧表示

フォーム等で日にちを選択させる場合、手書きで日付一覧を書くのは大変です。
「2013/05/12(日)」のような形式で日付一覧を表示させる場合は date() 関数を使えばシンプルに書くことができます。

<?php
$y = 2013;
$wday=array("日","月","火","水","木","金","土");

for($m=1;$m<=12;$m++){
  $lastday = date("t", mktime(0,0,0,$m,1,$y));
  for($d=1;($d <= $lastday);$d++){
    $timestamp = mktime(0,0,0,$m,$d,$y);
    $w = $wday[date("w", $timestamp)];
    echo date("Y/m/d", $timestamp) . "({$w})<br />\n";
  }
}

出力結果

2013/01/01(火)
2013/01/02(水)
2013/01/03(木)
2013/01/04(金)
2013/01/05(土)
2013/01/06(日)
2013/01/07(月)
2013/01/08(火)
2013/01/09(水)
2013/01/10(木)
2013/01/11(金)
(以下省略)

[PHP]重複しないランダムな数字を取り出す

記事にする程でもないですが、ある範囲内の数字を重複なしでランダムに並べるには次のようにします。

<?php
//0~30までのランダムな数字
$num = range(0,30);
shuffle($num);
$result = implode(",", $num);
echo $result;

range() 関数は A から Z までという指定もできます。

[PHP]変数、オブジェクトの参照渡しについて

PHP5 において、次のように書いても、変数 $a が書き換えられることはありません

<?php
$a   = "A";
$ref = $a;
$ref = "B";
echo $a;
結果: A

「&」を変数名の前につけると、その変数の別名(エイリアス)のような扱いになり、
別名の変数に加えた変更は元の変数にも影響するようになります。これを「参照渡し」といいます。

<?php
$a   = "A";
$ref = &$a;
$ref = "B";
echo $a;
結果: B

オブジェクト型の場合は、この「参照渡し」が常に行われるので、何も指定しなくても結果が変化します

$obj    = new stdClass();
$obj->a = "A";
$ref    = $obj;
$ref->a = "B";
echo $obj->a;
結果: B

オブジェクトのプロパティを代入した場合は、参照渡しが行われません。

$obj    = new stdClass();
$obj->a = "A";
$ref    = $obj->a;
$ref    = "B";
echo $obj->a;
結果: A

「&」を使えばこちらも同様に参照渡しとなります。

$obj    = new stdClass();
$obj->a = "A";
$ref    = &$obj->a;
$ref    = "B";
echo $obj->a;
結果: B