Voting

: min(zero, six)?
(Example: nine)

The Note You're Voting On

rune at zedeler dot dk
19 years ago
I haven't found a build-in function to check whether two obects are identical - that is, all their fields are identical.
In other words,
<?
class A {
 var $x;
 function __construct($x) { $this->x = $x; }
}
$identical1 = new A(42);
$identical2 = new A(42);
$different = new A('42');
?>
Comparing the objects with "==" will claim that all three of them are equal. Comparing with "===" will claim that all are un-equal.
I have found no build-in function to check that the two identicals are 
identical, but not identical to the different.
The following function does that:
<?
function deepCompare($a,$b) {
 if(is_object($a) && is_object($b)) {
 if(get_class($a)!=get_class($b))
 return false;
 foreach($a as $key => $val) {
 if(!deepCompare($val,$b->$key))
 return false;
 }
 return true;
 }
 else if(is_array($a) && is_array($b)) {
 while(!is_null(key($a) && !is_null(key($b)))) {
 if (key($a)!==key($b) || !deepCompare(current($a),current($b)))
 return false;
 next($a); next($b);
 }
 return true;
 }
 else
 return $a===$b;
}
?>

<< Back to user notes page

AltStyle によって変換されたページ (->オリジナル) /