#22847 [Ver]: Reference don't work in sort callbacks

From: Date: Thu, 07 Aug 2003 00:16:48 +0000
Subject: #22847 [Ver]: Reference don't work in sort callbacks
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-45482@lists.php.net to get a copy of this message
 ID:               22847
 Updated by:       iliaa@php.net
 Reported By:      jparneodo at yahoo dot fr
 Status:           Verified
 Bug Type:         Scripting Engine problem
 Operating System: RH7.2
-PHP Version:      4.3.2-RC
+PHP Version:      4.3.3RC2, 5.0.0b2-dev
 New Comment:

The problem can be replicated with a simpler script:
<?php
class A {
        var $b=1;
        function test()
        {
                global $g;
                $g =& $this->b;
        }
}
$n = new A();
$g = "BAR";
$n->test();
var_dump($g);
?>

The problem itself appears to be ZE's inability to make a variable
imported using global a reference. if $GLOBALS['var_name'] is used the
script works correctly


Previous Comments:
------------------------------------------------------------------------

[2003-04-23 05:51:44] jparneodo at yahoo dot fr

Same result (bad) with PHP/4.3.2-RC
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
(no linux test can be done today)

------------------------------------------------------------------------

[2003-04-23 04:53:21] sniper@php.net

Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip



------------------------------------------------------------------------

[2003-03-24 06:19:35] jparneodo at yahoo dot fr

function cmp($a,$b){
	global $g;
	var_dump($g);	// NULL here
	if($g[$a]>$g[$b]){
		return -1;
	}elseif($g[$a]<$g[$b]){
		return 1;
	}else{
		return 0;
	}
}
class A {
	var $aa=array('B'=>2,'A'=>1,'C'=>3);
	function sortme(){
		global $g;
		$g=&$this->aa;
		uksort($g,'cmp');
	}
}
$a=new A;
$a->sortme();		// Don't work

$g=&$a->aa;
uksort($g,'cmp');	// Work


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=22847&edit=1



Thread (6 messages)

« previous php.bugs (#45482) next »