慣れた作業こそ初心に返れ
お恥ずかしいけれど本当の話。
たとえば、"下記条件を満たす場合に何かしらの処理を実行したい"と考えたとします。
$testResultの中身が空、もしくは-1の場合
(※当該変数に0はセットされない想定)
この時、PHPでシンプルに書くならば
if (empty($testResult) || $testResult == -1) {
// 実行したい処理
}
もしくは
if (empty($testResult) || $testResult === -1) {
// 実行したい処理
}
になると思うのですが。
今日、上記を書いたつもりが書けてなくて(下記のように書いてしまって)、
"$testResultの中身が空でも-1でもないのに、if文の中に入ってしまう…"という事象を
発生させてしまいました。
if (empty($testResult) || $testResult = -1) {
// 実行したい処理
}
しかも、"分岐直前に仕込んだログ"が明らかな結果を示してくれているのに、
それに気づかず、"直前処理の不備"を数時間疑い続けるという…
当然不備が見つかるはずもなく、さらに混乱して冷静さを失う悪循環でした。
以上の経験をしたので、未来の自分のためにメモを残しておきます。
Smartyコンパイル結果が「null」になった時に疑うべきこと
HTML構造は問題ないはずなのに、Smartyコンパイル結果が「null」になる(厳密には、真っ白画面に文字列「null」のみ表示される)事象と遭遇したことはありますか?
私はあります。ええ、つい先日。
この事象ですが、「"文字化けを含む値"をSmarty変数にセットしたこと」が原因でした。
具体的には、たとえば「"下記配列の特定の値"をSmarty変数にセットしたい場面」において、「"$arrAnimalに存在しない値($arrAnimal['rabbit']とか)"を誤ってSmarty変数にセットすること」で発生します。
<?php
$arrAnimal = array(
'dog' => 'ポチ',
'cat' => 'たま'
);
?>
配列の規模が大きくなるほど、こういうキー指定ミスが起こる可能性は高くなるので、将来の再遭遇に備えて、この覚書を残しておきます。
有名どころのデザイン本と相性が悪い迷子仲間へ
先日のオンライン講演会で存在を知り、即ポチした本がありまして、それを昨日から読み進めています。
「How to Design いちばん面白いデザインの教科書 改訂版」という本なのですが、”必要十分な基礎知識を具体的な言葉で教えてほしい”私のようなタイプと相性ピッタリなので、他のデザイン本(有名どころだと「なるほどデザイン」とか)を買い漁ってもいまいち理解できない迷子仲間は、試しに読んでみると良いかもしれません。
「Rで学ぶプログラミングの基礎の基礎」にも同じことが言えるのですが、なんでこういう良書は、他の本の陰に隠れやすいんでしょうね…