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);
?>