$foo は 1 になる。
1 になるというか、真になってそれを出力すると 1 になる、といったほうがいいか。論理演算 || の結果は真偽値(この場合は真)で、echo で出力すると 1 になるということらしい。
もともとの話をすると、フォームからポストされたデータが空文字列だった場合にデフォルト値を設定しようとしたこと。こんな感じ:
$name = $_POST['name'] || 'no name';
上に書いたとおり、これだと $name を出力すると 1 になってしまう。
で、こう書けばいいようだ。
$name = $_POST['name']; $name |= 'no name';
1行増えるのがめんどくさいな。