Category Archives: Php

PHPの文字列比較コピペ

php

PHP「”0x0A” == “10″はTRUEですがよろしいですか」
ぼく「えっ」
PHP「”0x0A” == “10″はTRUEになりますが」
ぼく「いえFALSEです」
PHP「えっ」
ぼく「えっ」
PHP「まだ比較したことがないということでしょうか」
ぼく「えっ」
PHP「えっ」
ぼく「変化するってことですか」
PHP「なにがですか」
ぼく「型が」
PHP「ああ文字列でも整数っぽい文字列なら自動で型変換されますよ」
ぼく「そうなんだすごい」
PHP「では比較いたしましょうかTRUEですよ」
ぼく「でも”0x0A”は明示的にキャストしたら0になりますよね」
PHP「えっ」
ぼく「えっ」
PHP「ああ16進数のことなら比較の場合のみ10進数に自動で変換してから比較するんですよ」
ぼく「なにそれこわい」
PHP「”0x0A” == “+000010.0000000000000001″の場合もTRUEになります」
ぼく「なにそれもこわい」
PHP「えっ」
ぼく「えっ」

解決法
・暗黙の型変換の癖を知って注意して使う
・もしくは文字列比較には === 演算子を使う

でも === 演算子を使うって動的型付けの言語として敗北じゃないのか?と思ったりしてしまう。
そういう意味で僕はPHPよりPythonが好きなのだけど。

参考リンク
[続] PHPで文字列比較を行う場合の注意と、一応数値も抑えておいたほうが・・・
PHPの文字列比較で気をつけるべきこと – 暗黙の型変換
プログラミングを勉強したい。まず何をすればいいの?

ユーザー定義関数の記述箇所

php

ユーザー定義関数の定義と利用を同じファイル内に記述する場合、
順番が関係あるのか?ないのか?(・ω・)

答えは「記述場所は関係ない。」みたいだ。

以下、さんぷるぷる。
A、Bどちらの例でも問題ない(・ω・)b

A.前に定義を書く

// 関数の定義
function sampleFunc() {

}

// 関数の利用
sampleFunc();

B.後に定義を書く

// 関数の利用
sampleFunc();

// 関数の定義
function sampleFunc() {

}

後に定義を個別にまとめて置きたいので、それができるのは助かる~ヾ(・ω・)ノ
PythonとかJavaとかだとできない時があったような気がする。
やっぱりクラス別にファイルにしてインポートするのが普通なんだろうなぁ。

参考リンク
PHPのお勉強 : ユーザー定義関数 | 悩んデルタール人の部屋