🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #26733

Re: python vs php - potrzebne argumenty

#26733
From: Exe Very Cute
Date: Thu, 26 Nov 2009 18:02
80 lines
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-mail
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>

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