chodzi o to że "or" to tak naprawdę alternatywa, to samo co "||" tylko o mniejszym priorytecie (co tutaj akurat nie ma znaczenia tylko używane jest "or" żeby było bardziej czytelnie)
więc np:
a or b
czy
a || b
zwraca jakąś wartość, "a" w przypadku gdy "a" nie jest puste czy zerowe, w przeciwnym wypadku "b" i stosuje się to najczęściej do instrukcji warunkowych
if(a || b) chyba wiadomo co robi
samo (a || b) też będzie działać jednak wynik tej operacji jest ignorowany
warunkiem do działania jest to żeby "a" i "b" istniało, więc musi to albo być zmienna albo funkcja która zwraca jakąś wartość (to chyba logiczne bo co miałaby zwrócić cała instrukcja kiedy jednego argumentu by po prostu nie było ?)
i tu właśnie jest problem - "echo" nic nie zwraca, funkcja "print" zwraca zawsze "1"
to jest właśnie jedyna różnica między tymi dwoma funkcjami, że echo nie zwraca niczego przez co powinien być stosowany kiedy nie interesuje nas wartość zwracana bo jest teoretycznie szybszy (choć tak minimalnie że nie wiem kogo to obchodzi, w każdym razie po co specjalnie nie potrzebnie obciążać procesor)
właściwie chyba tylko "echo" nie będzie tutaj działać, tak naprawdę każda funkcja będzie zwracać jakąś wartość nawet gdy brakuje jej "return", w takim przypadku po prostu zwraca wartość typu NULL
a priorytety są ważne jakbyś chciał łączyć takie dziwne konstrukcje, np zamiast pisać:
mysql_connect() or die('błąd');
mysql_select_db() or die('błąd');
można napisać:
mysql_connect() and mysql_select_db() or die('błąd');
gdyby użyć zamiast "or", "||" to miałby wyższy priorytet i wtedy trzeba by zastosować nawias:
(mysql_connect() and mysql_select_db()) || die('błąd');
bo bez nawiasu, w przypadku błędu połączenia, całość by przyjęła już "false" bo nie ma sensu sprawdzać or'a skoro pierwszy argument and'a i tak jest false i już nie ma szans na zmiane tego stanu
tak więć zamiast pokazać komunikat "błąd", po prostu nic by się już nie zrobiło
oczywiście gdyby zamiast "and" też zastosować odpowiednik - "&&", to nic by się nie stało i nie trzeba już nawiasu bo priorytety znowu by były jak na początku
tak czy inaczej moim zdaniem taka kontrukcja po prostu głupio wygląda