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!
- <?
- $arr=array(
- array("1", "2", "3"),
- array("1", "2", "3"),
- array("1", "3", "2"),
- array("2", "4", "1", "3"),
- array(1=>"2", "4", "1", "3"),
- );
- foreach($arr as $k=>$a) {
- echo $k.".<br/>";
- print_r($a);
- echo "<br/>";
- }
- echo "0. == 1.";
- if ($arr[0]==$arr[1]) echo " - rovná se";
- else echo " - nerovná se";
- echo "<br/>";
- echo "1. == 2.";
- if ($arr[1]==$arr[2]) echo " - rovná se";
- else echo " - nerovná se";
- echo "<br/>";
- echo "2. == 3.";
- if ($arr[2]==$arr[3]) echo " - rovná se";
- else echo " - nerovná se";
- echo "<br/>";
- echo "3. == 4.";
- if ($arr[3]==$arr[4]) echo " - rovná se";
- else echo " - nerovná se";
- echo "<br/>";
- echo "1. == 2. (sorted)";
- if (sort($arr[1])==sort($arr[2])) echo " - rovná se";
- else echo " - nerovná se";
- echo "<br/>";
- ?>
komentáře
RSS Komentáře
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í :)
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
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é



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