Porovnání polí v PHP, jaká array se sobě rovnají?

Zbytečný článek? Pro úplného začátečníka? Máte pravdu, hlavně, že víte jak to funguje!


Zdrojový kód ke stažení test.php.txtUkázky k nahlédnutí test.php.
  1. <?
  2. $arr=array(
  3.     array("1", "2", "3"),
  4.     array("1", "2", "3"),
  5.     array("1", "3", "2"),
  6.     array("2", "4", "1", "3"),
  7.     array(1=>"2", "4", "1", "3"),
  8. );
  9.  
  10. foreach($arr as $k=>$a) {
  11.     echo $k.".<br/>";
  12.     print_r($a);
  13.     echo "<br/>";
  14. }
  15. echo "0. == 1.";
  16. if ($arr[0]==$arr[1]) echo " - rovná se";
  17. else echo " - nerovná se";
  18. echo "<br/>";
  19.  
  20. echo "1. == 2.";
  21. if ($arr[1]==$arr[2]) echo " - rovná se";
  22. else echo " - nerovná se";
  23. echo "<br/>";
  24.  
  25. echo "2. == 3.";
  26. if ($arr[2]==$arr[3]) echo " - rovná se";
  27. else echo " - nerovná se";
  28. echo "<br/>";
  29.  
  30. echo "3. == 4.";
  31. if ($arr[3]==$arr[4]) echo " - rovná se";
  32. else echo " - nerovná se";
  33. echo "<br/>";
  34.  
  35. echo "1. == 2. (sorted)";
  36. if (sort($arr[1])==sort($arr[2])) echo " - rovná se";
  37. else echo " - nerovná se";
  38. echo "<br/>";
  39. ?>

komentáře

RSS Komentáře k článku RSS Komentáře   Add to Google
07.10.2008 11:20 | Anonym (starenka) | ..

A co to zkusit prohnat pres array_diff() a jen testnout jestli, to co vrati je prazdny pole? ;)

07.10.2008 20:19 | Administrátor | Re: ..

pokud je otázka jestli pole obsahují stejné hodnoty tak proč ne, ale jestli se nemýlím, tak array_diff nedokáže porovnat klíče, co když jsou důležité? a co když porovnávané nejsou pole, ale jednou v cyklu porovnáváme objekty a jednou pole a jednou stringy, každopádně tenhle článek neřeší nic konkrétního, jen je to zamyšlení nad naprosto jasnou věcí a zbytečná ztráta několika minut psaním věci, kterou každý ví :)

07.10.2008 23:29 | Anonym (starenka) | Re: Re: ..

to, co pises je svata pravda, ale v clanku porovnavas pole a az na posledni nebyli asociativni :p

07.10.2008 23:29 | Anonym (starenka) | Re: Re: Re: ..

nebylY (nebyla) :))

08.10.2008 01:07 | Administrátor | Re: Re: Re: Re: ..

:) berme to prostě jako jen jako ujasnění jasné věci, někdy jsou chvíle, kdy člověk neví 1+1, tak jak je v úvodu jsou to jasné věci, jde jen o to si je někdy uvědomit

18.11.2008 13:43 | Anonym (fos4) | proc slozite kdyz to jde lehce..

if(md5(seriali­ze(pole1)) == md5(serialize(po­le2))) {
echo „jop, rovnaji se“; }

18.11.2008 19:54 | Administrátor | Re: proc slozite kdyz to jde lehce..

přiznám se, že jsem to nezkoušel, ale podle mne to nefunguje, proč složitě, když to lze jednoduše, není to to samé jako pole1==pole2?

krom toho řekl bych, že to neřeší právě různé pořadí hodnot nebo ano?

19.11.2008 09:59 | Anonym (fos4) | Re: Re: proc slozite kdyz to jde lehce..

v jistych verzich PHP vracelo pole1 == pole2 vzdy true pokud to byla pole a uz se nezjistovalo jake jsou hodnoty uvnitr. V PHP4.x a PHP5.x uz to funguje spravne. Tudis ano, je to to same.

A testuje to i hodnoty i poradi viz. http://cz.php.net/…erialize.php

19.11.2008 22:17 | Administrátor | Re: Re: Re: proc slozite kdyz to jde lehce..

v tom případě se vracíme k významu článku, kde jsem chtěl ukázat jak jen to funguje, serializace pochopitelně porovnává pole tak jak doopravdy je nastaveno se vsemi parametry, což nebylo účelem, abych to uzavřel chtěl jsem na triviálním příkladě ukázat jak to funguje a co to vrací, což by zkušenějšímu programátorovi mělo být jasné, co se týče porovnání polí serializace ano, ale pokud pole1 == pole2 je to samé proč to používat serializaci a md5 je tady snad úplně zbytečné

Jméno
Název
Text
Lze používat Texy! syntax. Příklad syntaxe: "text odkazu":odkaz, **tučně**, *kurzíva*, `code`. PHP kód uzavírejte do <?php ... ?> a JavaScript do <script> ... </script>