Скажем так:
$result = first() || second();
будет оценивать:
if (first()) {
$result = true;
} elseif (second()) {
$result = true;
} else {
$result = false;
}
в то время как:
$result = first() or second();
будет оценивать до:
if ($result = first()) {
// nothing
} else {
second();
}
Другими словами, вы можете рассмотреть:
$result = first() || second();
$result = (first() || second());
и
$result = first() or second();
быть:
($result = first()) || second();
Это просто вопрос приоритета.