Article View: pl.comp.lang.python
Article #26733Re: python vs php - potrzebne argumenty
From: Exe Very Cute
Date: Thu, 26 Nov 2009 18:02
Date: Thu, 26 Nov 2009 18:02
80 lines
4136 bytes
4136 bytes
Bart Ogryczak pisze:
> On Nov 25, 9:15 pm, Exe Very Cute <ksh...@poczta.Xonet.pl> wrote:
>> Bart Ogryczak pisze:
>>
>>
>>
>>
>>
>>> Jeśli $a == $b oraz $a i $ b są tego samego typu, to co można
>>> powiedzieć o relacji między $array[$a] i $array[$b]?
>> [8<]
>>
>>> <?php
>>> $array = array('0' => 'a', '00' => 'b');
>>> $a = '0'; $b = '00';
>>> var_dump($a == $b);
>>> var_dump($array[$a]);
>>> var_dump($array[$b]);
>>> ?>
>>> bool(true)
>>> string(1) "a"
>>> string(1) "b"
>> Masz błąd w kodzie. Powinno być:
>>
>> var_dump($a === $b);
>> var_dump($array[$a]);
>> var_dump($array[$b]);
>>
>> Poznaj PHP.
>
> ROTFLMAO. A teraz może sprawdź w oficjalnej dokumentacji PHP, co wg
> autorów znaczy ===.
Dokładnie wiem, co znaczy.
> $a == $b oraz są tego samego typu (string). Czyli jeśli by wierzyć
> dokumentacji PHP, to oznacza to, że $a === $b.
Nie. Zupełnie nie rozumiesz o co w tym chodzi.
Operator "==" oraz "===" są konsekwencją pierwotnych założeń czym PHP
miało być. Wraz z rozwojem PHP powstał problem z rzutowaniem typów,
który rozwiązano dodając "===".
Inaczej mówiąc NIEZGODNIE z tym co pisze w manualu ale w zgodzie z
PRAKTYKĄ, w PHP de facto "===" jest znakiem równości, a operator "=="
jest czymś w rodzaju:
"Obie wartości mogą być sobie równe (bądź mogą być traktowane jako
równe), biorąc pod uwagę zakręcone reguły rzutowania typów oraz różne
wersje PHP."
Operator "==" jest po prostu wygodny. Generalnie PHP miało pracować na
stringach. Po co robić np.
$x = 3;
...
$zmienna_int = (int)$_GET['zmienna'];
if($zmienna_int == $x) { }
Skoro można
if($_GET['zmienna'] == $x) { } i też będzie to prawdą.
Zamiennie:
if((int)$_GET['zmienna'] === $x) { }
Operator "===" jest więc po prostu operatorem równości w takim samym
sensie w jakim operator "==" w językach silnie typowanych.
A że nazywa się "operatorem identyczności"? Jak zwał tak zwał.
> Tyle, że PHP ma taki słabo udokumentowani "ficzer", że napisy które są
> liczbami są automagicznie rzutowane na liczby. Prawda, że miłe.
To nie jest słabo udokumentowane. Słabo udokumentowane to jest
rzutowanie na stringów na tablice (tylko analiza źródeł PHP może
wyjaśnić dlaczego to jest rzutowane tak a nie inaczej).
Pozdr
Exe Very Cute
Technical Details
Message-ID:
<hemfs7$ef8$1@news.dialog.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!news.dialog.net.pl!not-for-mailReferences:
<h83in7$rl3$1@inews.gazeta.pl> <h8447e$mg9$1@inews.gazeta.pl> <6a8e97cb-add7-450a-b7f2-f16ecc3cd0f6@y23g2000yqd.googlegroups.com> <6a691836-80db-4b66-bc41-f3c15e6782f7@v36g2000yqv.googlegroups.com> <6e26a02f-20fa-4a82-a722-9fbf78f0ef29@z41g2000yqz.googlegroups.com> <hcc9nt$eqr$1@news.lublin.pl> <f03c49b0-651b-4afa-ad73-db8dde63fdef@p35g2000yqh.googlegroups.com> <hccvvt$u0t$1@news.lublin.pl> <ac46bc62-a3ee-40a1-ac5d-860be3029272@z41g2000yqz.googlegroups.com> <hcd7ck$3a6$1@news.lublin.pl> <2f2d1c53-fa9a-40b1-be71-60f530a0be72@g23g2000yqh.googlegroups.com> <hce79t$m49$1@news.lublin.pl> <b793e5c7-90fc-4a41-ad54-31d2a67f62dc@b15g2000yqd.googlegroups.com> <hek38v$3rg$1@news.dialog.net.pl> <d54c15a1-3acc-499b-a8fb-14f3860cb674@j19g2000yqk.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!news.dialog.net.pl!not-for-mail From: Exe Very Cute <kshksh@poczta.Xonet.pl> Newsgroups: pl.comp.lang.python Subject: Re: python vs php - potrzebne argumenty Date: Thu, 26 Nov 2009 19:02:47 +0100 Organization: Dialog Net Lines: 81 Message-ID: <hemfs7$ef8$1@news.dialog.net.pl> References: <h83in7$rl3$1@inews.gazeta.pl> <h8447e$mg9$1@inews.gazeta.pl> <6a8e97cb-add7-450a-b7f2-f16ecc3cd0f6@y23g2000yqd.googlegroups.com> <6a691836-80db-4b66-bc41-f3c15e6782f7@v36g2000yqv.googlegroups.com> <6e26a02f-20fa-4a82-a722-9fbf78f0ef29@z41g2000yqz.googlegroups.com> <hcc9nt$eqr$1@news.lublin.pl> <f03c49b0-651b-4afa-ad73-db8dde63fdef@p35g2000yqh.googlegroups.com> <hccvvt$u0t$1@news.lublin.pl> <ac46bc62-a3ee-40a1-ac5d-860be3029272@z41g2000yqz.googlegroups.com> <hcd7ck$3a6$1@news.lublin.pl> <2f2d1c53-fa9a-40b1-be71-60f530a0be72@g23g2000yqh.googlegroups.com> <hce79t$m49$1@news.lublin.pl> <b793e5c7-90fc-4a41-ad54-31d2a67f62dc@b15g2000yqd.googlegroups.com> <hek38v$3rg$1@news.dialog.net.pl> <d54c15a1-3acc-499b-a8fb-14f3860cb674@j19g2000yqk.googlegroups.com> Reply-To: kshksh@poczta.Xonet.pl NNTP-Posting-Host: dynamic-62-87-191-96.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1259258567 14824 62.87.191.96 (26 Nov 2009 18:02:47 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Thu, 26 Nov 2009 18:02:47 +0000 (UTC) User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) In-Reply-To: <d54c15a1-3acc-499b-a8fb-14f3860cb674@j19g2000yqk.googlegroups.com> X-Antivirus: avast! (VPS 091126-0, 2009-11-26), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit