錫さんの雑多メモ

デザインとかプログラミングとかデッサンとかを、のんびりお勉強しているにゃんこのブログ。

慣れた作業こそ初心に返れ

お恥ずかしいけれど本当の話。


たとえば、"下記条件を満たす場合に何かしらの処理を実行したい"と考えたとします。

$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 いちばん面白いデザインの教科書 改訂版」という本なのですが、”必要十分な基礎知識を具体的な言葉で教えてほしい”私のようなタイプと相性ピッタリなので、他のデザイン本(有名どころだと「なるほどデザイン」とか)を買い漁ってもいまいち理解できない迷子仲間は、試しに読んでみると良いかもしれません。

books.mdn.co.jp

 

「Rで学ぶプログラミングの基礎の基礎」にも同じことが言えるのですが、なんでこういう良書は、他の本の陰に隠れやすいんでしょうね…

www.cutt.co.jp