by shigemk2

当面は技術的なことしか書かない

引数の型は関数内でどうなっているのか

関数の引数が、関数の中で自動的にキャストされることはない。

===を利用したコード

<?php
function hoge($a) {
  $b = 31;
  var_dump($a);
  var_dump($b);
  return ($a === $b);
}
var_dump(date('t'));
var_dump(hoge(date('t'))); // 1回目の呼び出し
var_dump(hoge(31)); // 2回目の呼び出し

結果

string(2) "31"
// 1回目の呼び出し
string(2) "31"
int(31)
bool(false)
// 2回目の呼び出し
int(31)
int(31)
bool(true)

==を利用したコード

ちなみに、==を利用した場合はキャストされるのでtrueになる。

<?php
function hoge($a) {
  $b = 31;
  return ($a == $b);
}
var_dump(hoge(date('t'))); // true

こうしても良いでしょう。

<?php
function hoge($a) {
  $b = 31;
  return ((int)$a == $b);
}
var_dump(hoge(date('t'))); // true

追記(笑): タイトルを変更しました