zerofill型のコードマップのkeyの型には気を付けて
やっぱりコードマップだよね
俺はコウヘイ。エンジニアマスターを目指して開発修行の旅に出ている。DBのカラムのコードマップを作っていた時のお話。
MySQL< zerofillだぞ
僕< なるほど、0埋めね
僕< このカラムのコードマップをアプリケーションに組み込みぞ!
const MONSTER_CODE = [
'01' => 'ドラゴン',
'02' => 'スライム',
'03' => 'おばけ',
...
'99' => '吸血鬼',
];
僕< DBからfetchするとstringになるしkeyの型はstringにしておくか
上手くいかない分岐
僕< どうやらNo99は存在してはいけないモンスターらしい。分岐処理で表示を分けるか
foreach (BOKEMON::MONSTER_CODE as $key => $val) {
if ($key === '03' || $key === '99') {
$hideMonster[] = $key;
continue;
}
$showMonster[] = $key;
}
var_dump($hideMonster); // ['おばけ']
僕< うわぁ!おばけだ!
吸血鬼が取れません。何故でしょうか。
$keyの型が、、、変わってる、、、
理由は以下。
var_dump(BOKEMON::MONSTER_CODE);
/**
[
'01',
'02',
'03',
...
99,
];
PHP< int型で取れるときは勝手に変えちゃうよ
僕< うわあああああああああ
zerofill型トラップに気をつけろ