note 93968 added to language.oop5.object-comparison
| From: | RPaseur at NationalPres dot org | Date: | Thu, 08 Oct 2009 23:09:51 +0000 |
| Subject: | note 93968 added to language.oop5.object-comparison | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-161574@lists.php.net to get a copy of this message | ||
SimpleXML Objects are different, even if made from the same XML.
<?php // RAY_SimpleXML_compare.php
error_reporting(E_ALL);
echo "<pre>\n";
// TWO SimpleXML OBJECTS ARE NOT EQUAL WITH COMPARISON OPERATORS. PHP 5.2.10
// AN XML STRING
$xml = '<?xml version="1.0" encoding="utf-8"?>
<thing>
<number>123456</number>
<email>user@domain.com</email>
<state>CA</state>
</thing>';
// SHOW THE XML STRING
echo htmlentities($xml);
// MAKE TWO OBJECTS
$obj1 = SimpleXML_Load_String($xml);
$obj2 = SimpleXML_Load_String($xml);
// COMPARE OBJECTS AND FIND THAT THIS ECHOS NOTHING AT ALL
if ($obj1 === $obj2) echo "\n\nOBJECTS IDENTICAL ";
if ($obj1 == $obj2) echo "\n\nOBJECTS EQUAL ";
// SHOW THE OBJECTS - NOTE DIFFERENT SimpleXMLElement NUMBERS
echo "\n\n";
var_dump($obj1);
var_dump($obj2);
// ITERATE OVER THE OBJECTS
foreach ($obj1 as $key => $val1)
{
$val2 = $obj2->$key;
var_dump($val1);
var_dump($val2);
if ($val1 == $val2) echo "\n\nOBJECTS EQUAL"; // ECHOS NOTHING
// RECAST AS STRINGS AND COMPARE AGAIN
$val1 = (string)$val1;
$val2 = (string)$val2;
if ($val1 === $val2) echo "STRINGS IDENTICAL: $key => $val1 \n\n"; // CONMPARISON
SHOWS STRINGS IDENTICAL
}
----
Server IP: 192.41.40.227
Probable Submitter: 74.9.128.130
----
Manual Page -- http://www.php.net/manual/en/language.oop5.object-comparison.php
Edit -- https://master.php.net/note/edit/93968
Del: integrated -- https://master.php.net/note/delete/93968/integrated
Del: useless -- https://master.php.net/note/delete/93968/useless
Del: bad code -- https://master.php.net/note/delete/93968/bad+code
Del: spam -- https://master.php.net/note/delete/93968/spam
Del: non-english -- https://master.php.net/note/delete/93968/non-english
Del: in docs -- https://master.php.net/note/delete/93968/in+docs
Del: other reasons-- https://master.php.net/note/delete/93968
Reject -- https://master.php.net/note/reject/93968
Search -- https://master.php.net/manage/user-notes.php