Edit report at http://bugs.php.net/bug.php?id=52114&edit=1
ID: 52114 Updated by: dtajchre...@php.net Reported by: iblue at gmx dot net Summary: Array key moves when using func_get_args() -Status: Open +Status: Bogus Type: Bug Package: Scripting Engine problem Operating System: Ubuntu Linux 10.04 PHP Version: 5.3.2 New Comment: Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php $arguments[0] is a string. $arguments[0]['key'] refers to an offset in said string. Non-integer offsets are converted to integers. Since the string 'key' doesn't contain any valid numeric data, it turns into a 0.. so you're checking if the first character of the string is set... it is. :) Read through this page for a more detailed explanation: http://www.php.net/manual/en/language.types.string.php Previous Comments: ------------------------------------------------------------------------ [2010-06-17 22:34:05] iblue at gmx dot net Description: ------------ Arrays get scrambled when using func_get_args(). See code sample below. Test script: --------------- <?php function foo(/* ... */) { $arguments = func_get_args(); if(isset($arguments[0]['key'])) { var_dump($arguments[0]); var_dump($arguments[1]); echo "You see that \$arguments[0] is a string, while \$arguments[1] is an array.\n"; echo "So this code should never get executed.\n"; } else { echo "Correct behaviour"; } } foo("some string", array("key" => "value")); Expected result: ---------------- Script output: Correct behaviour Actual result: -------------- Script output: string(11) "some string" array(1) { ["key"]=> string(5) "value" } string(1) "s" You see that $arguments[0] is a string, while $arguments[1] is an array. So this code should never get execute. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52114&edit=1