[Phpmyadmin-devel] a PHP 5.1.2 bug?

Marc Delisle Marc.Delisle at cegepsherbrooke.qc.ca
Fri Jan 13 05:15:03 CET 2006


Sebastian Mendel a écrit :
> Garvin Hicking schrieb:
> 
>>Hi Marc!
>>
>>
>>>Look at this sample code:
>>><?php
>>>$the_query = "INSERT INTO `aaa` (`f1`, `f2`) VALUES ('1', 'aaa')";
>>>preg_match('@INSERT\sINTO\s\`([^\`]+)\`@iu', $the_query, $error_table = array()
>>>);
>>>print_r($error_table); ?>
>>
>>It surprises me that this has ever worked :)
> 
> 
> me not!
> 
> it is more than logical that this should work, as = is always evaluated
> first!
> 
> 
> 
>>I guess that PHP 5.1.2 has a different way of evaluating/processing the order of
>>the array assignment. But the way of specifieing an assignment within a function
>>call is something I've never seen before, and also looks a bit
>>misleading-codewise, IMHO.
>>
>>So you might want to ask how this problem came, but I'm pretty sure the answer
>>will be "It was never meant to work, so you shouldn't have relied on it. We
>>fixed this because of memory corruption issues" ;-)
> 
> 
> i don't think so.
> 
> why?
> 
> whats the difference between
> 
> function( anotherFunction() );
> function( $var = 'value' );
> 
> ???
> 
> why should this not work?
> 
> for example in C i often see this to clarify parameters
> 
> function(true, false, true);
> or
> function($use_utf8 = true, $return = false, $escape = true);
> 
> what do you think is easier to read? and why should this not work in PHP?
> 
> 

Hi Sebastian,

Please do not draw too general conclusions about what I wrote. This 
example works in PHP 5.1.2:

$error_table = array();

preg_match('@INSERT\sINTO\s\`([^\`]+)\`@iu',
   $the_query =  "INSERT INTO `aaa` (`f1`, `f2`) VALUES ('1', 'aaa')", 
   $error_table );

print_r($error_table);
?>

I was just talking about using
$error_table = array()
as a function argument.

Anyway, I could not find this syntax in the doc. If you can't find it in 
the doc either, then this would be a PHP feature request :)

Marc




More information about the Developers mailing list