by shigemk2

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

WebDBPress Vol.56 PHP転ばぬ先の杖

PHPは動的型付け言語

PHPはCやJavaみたく実行前に変数の型を決定できる(しなければならない)言語ではなく、
実行時にしか変数の型が決まらない言語です。つまり、必ず変数の型を前もって
決める必要がないということです。
PHPでは 文字列同士の比較であっても、値が数値形式であれ ば数値として比較します。

ただ、型を意識しなくても良いから敷居が低いぶん、他の言語にはないPHP特有の落とし穴が
存在するようです。

設計上の型は数値なのにPHPでの型は文字列だった、とかは珍しくありません。
PHPの型

  • boolean
  • integer
  • float
  • array
  • null

など
キャスト
関数を呼び出すときや、演算子を使うときに、キャストされます。
PHPにはこういう暗黙の型キャスト
行われたりします。そして、キャストは一時的なもので型そのものが変更されない
ということを留意すべきです。

boolean にキャストすると false になるもの

  • null
  • "" 空文字列
  • "0" 長さ1のstring
  • 0 integer
  • 0.0 float
  • array() 空の配列

ほかの値はすべて true になります。

boolean から integer または float にキャスト

  • false 0
  • true 1
  • string からのキャストは、文字列の先頭から整数または浮動小数点数とみなせる文字までを数値として解釈します。

文字列へのキャスト

  • boolean からのキャストは false が ""、true が "1" となります。
  • integer からのキャストは整数の全桁がそのまま文字列になります。
  • float からのキャストは指数表現になる場合と、integer 同様に数字だけの場合と 2 種類あります。

isset
引数がnullか、未定義のときにfalseを返します。
!is_null、!==nullと同じです。

array_key_exists
当該配列の値が未定義なのかを判定します(つまりnullか未定義かを
調べることができます)
まあ知っておくとよいかんじです。

真偽判定については、僕のエントリーをご参考下さい。
=== と == の違い - by shigemk2

WEB+DB PRESS Vol.56

WEB+DB PRESS Vol.56