Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
chciałbym wiedzieć, od czego zależy, że kod:
<?php $value = true; var_dump($value ?: false);
na jednym serwerze pokazuje wartość true, a na drugim serwerze wartość false.
Czy jest za to odpowiedzialna jakaś zmienna w php.ini?
Pisałem na różnych forach, jednak jak dotąd nikt nie potrafi mi odpowiedzieć na to pytanie,
a jest to temat dla mnie dość ważny, gdyż jedna z osób utrzymująca u mnie stronę twierdzi, że z tego powodu nie działają niektóre linki na stronie, nie wyświetlają się tytuły etc.
Pzdr
Offline
http://pl1.php.net/ternary polecam czytac manuala, chodzi za pewne o wersje php
Ostatnio edytowany przez averatec (2014-03-04 20:39:48)
Offline
Ok, rozumiem, że po prostu trzeba przebudować kod?
Nie jestem biegły w php
Offline
hmm chyba sie mylilem, niezaleznie od wersji, wynik jest taki sam
http://sandbox.onlinephpfunctions.com/ tutaj mozesz sprawdzic dla kazdej wersji
Offline
I praktycznie wszędzie jest bool(true) a u mnie false.
I ni cholery nie wiem z jakiego powodu.
Offline
Jakiej wersji PHP używasz?
Offline
Na Debianie mam PHP 5.4.4-14+deb7u7
a na FreeBSD PHP 5.4.25 (cli)
i na obu jest false
Offline
PHP-FPM
5.3.27-pl0-gentoo bool(true)
Offline
#define true false // happy debugging suckers.
Offline
W sensie, mam dopisać po <?php
#define true false ?
Wklepałem z ciekawości w konsoli
php x.php
i mi pokazało
bool(true)
Dlaczego więc przez przeglądarkę pokazuje false?
winnetou napisał(-a):
PHP-FPM
Kod:
5.3.27-pl0-gentoo bool(true)
Klepane z konsoli, czy przez przeglądarkę?
Offline
Źródło mojej wypowiedzi :-):
http://fooyeahcode.tumblr.com/post/966746682/define … gging-suckers
Pomyślałem że w kodzie produkkcyjnym ktoś zrobił sobie dowcip, no i sie "je-bie".
Nie pisze w PHP (wcale !), ale nie oczekiwal bym zdefiniowanego zachowania w przypadku kiedy uzywasz jezyka nie do końca zgodnie z założeniem, personalnie dla operatora trójargumentowaego nie uzywal bym 2 argumentów ...
Wydaje mi się ze wpisanie ($value ? true : false) by zadziałało, ale jak mowie nie pisze w PHP.
Dlaczego mozesz dostawac "false" ? No jest to jak dla mnie dosyć zrozumiałe, jako parametr do funkcji podajesz puste wyrazenie, pusta zmienna, puste pole .... nie zdefiniowana pustke.
Pewnie tak samo by zadziałało
$value; // nie zdefiniowana wartosc, o ile cos takiego mozna zrobic w PHP. var_dump($value); >
Chciałem jeszcze raz zaznaczyć ze nie pisze w PHP :-) (ale sie wypowiadam, bom Polak, nie znam sie ale se pogadam :-)).
Offline
Ale ten sam kod na innych serwerach na których klient ma wykupiony hosting przez przeglądarkę zwraca wartość true :)
Natomiast kod
<?php $value = true; var_dump(true ?: false) ?>
Pokazuje wartość true.
Ostatnio edytowany przez lewyx84 (2014-03-05 19:48:18)
Offline
co daje ?
var_dump(($value == true) ?: false)
Offline
bool(true) zarówno w konsoli jak i przeglądarce
Offline
a tylko i wylacznie z rzutowaniem czyli:
1.
var_dump((bool)$value ?: false);
i jeszcze
2.
$value = (bool)true; var_dump($value ?: false);
3.
$value = TRUE; var_dump($value ?: false);
Offline
1.
<?php var_dump((bool)$value ?: false); ?>
konsola
PHP Notice: Undefined variable: value in /usr/home/lewy/www/microserwis.pl/php/1.php on line 2 bool(false)
www również false
2.
<?php $value = (bool)true; var_dump($value ?: false); ?>
konsola true, przeglądarka false
3.
<?php $value = TRUE; var_dump($value ?: false); ?>
konsola true, przeglądarka false
Offline
a daj eszcze na koniec
<?php $value = true; var_dump((bool)$value ?: false); ?>
oraz
<?php $value = false; var_dump( ($value == false) ?: false); ?>
oraz
<?php var_dump((false == true) ?: false); ?>
Jeszce pytanie zawsze testujesz na jednej stronie / domenie ?
Ewentualnie na stronie domenie od jednego autora ?
Ostatnio edytowany przez gindek (2014-03-05 22:18:34)
Offline
<?php $value = true; var_dump((bool)$value ?: false); ?>
Konsola i przeglądarka -> true
<?php $value = false; var_dump( ($value == false) ?: false); ?>
Konsola i przeglądarka -> true
<?php var_dump((false == true) ?: false); ?>
Konsola i przeglądarka -> false
Ostatnio edytowany przez lewyx84 (2014-03-05 22:22:59)
Offline
Sprawdzales na innej stronie na tym serwerze czy wszystko sprawdzasz na jednej stronie ?
Mozliwe ze w kodzie strony jest cos "nie codziennego" wpisane.
No i koniec koncow okaze sie ze apach jest jak najbardziej ok, tylko kod strony jest wysypany w ktoryms momecie, a caly temat jest bardziej do dzialu programowania, niz do sieci.
Offline
Inne strony chodzą bez zarzutu. Problem jest tylko z tą jedną stroną. Programista powiedział klientowi, że to problem na serwerze i koniec. Mi się coś wydaje, że problem leży w kodzie PHP.
Fakt, dział trochę nie ten.
Offline
grepnij po "true"
oraz grepnij po "false"
I zobacz czy ktos wartosci nie zmieniał dla tych słów kluczowych.
swoja droga znalazlem jeszcze
zend.ze1_compatibility_mode boolean
Zobacz czy masz to ustawione / badz nie ustawione, jezeli wystepuje ten magiczny przelacznik na "feralnej" stronie, to czy pojawia sie na innych stronach.
Offline