Bug #17246 Updated: failed in passing by reference
| From: | kubo at isite dot co dot jp | Date: | Wed, 15 May 2002 12:27:28 +0000 |
| Subject: | Bug #17246 Updated: failed in passing by reference | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-7745@lists.php.net to get a copy of this message | ||
ID: 17246
Updated by: kubo@isite.co.jp
Reported By: kubo@isite.co.jp
Status: Open
Bug Type: Scripting Engine problem
Operating System: Solaris 8
PHP Version: 4.2.0
New Comment:
Sorry, output is wrong.
following right output:
case 1:
$a = 1
$b = 2
case 2:
$a = 1
$b = 2
case 3:
$a = foo
$b = bar
case 4:
$a = 1st
$b = 2nd
case 5:
$a = 1
$b = 2
case 6:
$a = 1st
$b = 2nd
Regards,
KUBO Atsuhiro
Previous Comments:
------------------------------------------------------------------------
[2002-05-15 08:13:06] kubo@isite.co.jp
Hi, I falied in passing by reference using call_user_function().
In case 2 and 5, I expect that $a and $b are overwritten by MyMethod or
MyFunction. However, they were not overwritten.
Is this right doing? Or is my understanding wrong?
Regards,
KUBO Atsuhiro
test code:
<?php
class MyClass {
function MyMethod(&$arg1, &$arg2) {
$arg1 = 'foo';
$arg2 = 'bar';
}
}
print "case 1:\n";
$a = 1;
$b = 2;
print '$a = ' . $a . "\n";
print '$b = ' . $b . "\n";
print "case 2:\n";
$a = 1;
$b = 2;
$obj = new MyClass;
call_user_func(array(&$obj, 'MyMethod'), $a, $b);
print '$a = ' . $a . "\n";
print '$b = ' . $b . "\n";
print "case 3:\n";
$a = 1;
$b = 2;
call_user_func(array(&$obj, 'MyMethod'), &$a, &$b);
print '$a = ' . $a . "\n";
print '$b = ' . $b . "\n";
print "case 4:\n";
$a = 1;
$b = 2;
MyFunction($a, $b);
print '$a = ' . $a . "\n";
print '$b = ' . $b . "\n";
print "case 5:\n";
$a = 1;
$b = 2;
call_user_func('MyFunction', $a, $b);
print '$a = ' . $a . "\n";
print '$b = ' . $b . "\n";
print "case 6:\n";
$a = 1;
$b = 2;
call_user_func('MyFunction', &$a, &$b);
print '$a = ' . $a . "\n";
print '$b = ' . $b . "\n";
exit();
function MyFunction(&$arg1, &$arg2) {
$arg1 = '1st';
$arg2 = '2nd';
}
?>
output:
$a = 1
$b = 2
case 2:
$a = 1
$b = 2
case 3:
$a = foo
$b = bar
case 4:
$a = hoge
$b = huge
case 5:
$a = 1
$b = 2
case 6:
$a = hoge
$b = huge
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=17246&edit=1