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
[url]http://pl1.php.net/ternary[/url] 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
[url]http://sandbox.onlinephpfunctions.com/[/url] 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?
[quote=winnetou]PHP-FPM
5.3.27-pl0-gentoo bool(true)
[/quote]
Klepane z konsoli, czy przez przeglądarkę?
Offline
przeglądarka
Offline
Źródło mojej wypowiedzi :-):
http://fooyeahcode.tumblr.com/post/966746682/define-true-false-happy-debugging-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
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00003 | SET NAMES latin2 |
0.00133 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.139.235.177' WHERE u.id=1 |
0.00067 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.139.235.177', 1732437534) |
0.00028 | SELECT * FROM punbb_online WHERE logged<1732437234 |
0.00061 | SELECT topic_id FROM punbb_posts WHERE id=259236 |
0.00008 | SELECT id FROM punbb_posts WHERE topic_id=25380 ORDER BY posted |
0.00031 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25380 AND t.moved_to IS NULL |
0.00022 | SELECT search_for, replace_with FROM punbb_censoring |
0.00113 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25380 ORDER BY p.id LIMIT 0,25 |
0.00073 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25380 |
Total query time: 0.00548 s |