PHPで$foo = ” || ‘foo’;とやると

$foo は 1 になる。
1 になるというか、真になってそれを出力すると 1 になる、といったほうがいいか。論理演算 || の結果は真偽値(この場合は真)で、echo で出力すると 1 になるということらしい。

もともとの話をすると、フォームからポストされたデータが空文字列だった場合にデフォルト値を設定しようとしたこと。こんな感じ:

$name = $_POST['name'] || 'no name';

上に書いたとおり、これだと $name を出力すると 1 になってしまう。

で、こう書けばいいようだ。

$name = $_POST['name'];
$name |= 'no name';

1行増えるのがめんどくさいな。