note 93968 modified in language.oop5.object-comparison by danbrown
| From: | danbrown@php.net | Date: | Fri, 09 Oct 2009 01:41:28 +0000 |
| Subject: | note 93968 modified in language.oop5.object-comparison by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-161578@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@example.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
}
?>
--was--
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
}
http://php.net/manual/en/language.oop5.object-comparison.php