Sebastian Mendel a écrit :
Marc Delisle schrieb:
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); ?>
of course not!
What do you mean "of course not"? That this script does not work? It works in PHP 5.1.2.
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 :)
the problem is not that this variable is not assigned in the function call, but it is assigned AFTER the function is executed:
<?php function myFunc(&$var) { $var = 'set in function'; } $var = 'set before function'; myFunc($var = 'set in function call'); var_dump($var); ?>
expected, and how it was before 5.1.2: set in function
now with 5.1.2 it prints: set in function call
Again, where do you see in the doc that we are allowed to do this?
Marc