Re: array_map in conjunction with user_call_func_array - inconsistency
| From: | Jochem Maas | Date: | Sat, 05 Feb 2005 14:35:54 +0000 |
| Subject: | Re: array_map in conjunction with user_call_func_array - inconsistency | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-208118@lists.php.net to get a copy of this message | ||
so nobody has any idea? I checked the bug DB btw and couldn't find anything....
Jochem Maas wrote:
listers, I was playing around with call_user_func_array() and array_map() on PHP 5.0.2 (cli) (built: Nov 9 2004 19:00:36) and noticed the that calling call_user_func_array() on 'array_map' with more than 2 args (i.e. more than just the name of the callback and array argument that are required for 'array_map') then a numerically indexed array is returned, where as with just the minimum 2 args the associative keys of array are maintained: question is have I missed something, am I doing something wrong or it this a 'buglet'? =========================================================================== function array_map_assoc($callback, $arr) {$keys = array_keys($arr); $args = func_get_args();$arr = call_user_func_array("array_map", $args);/* return the fixed array */ return $arr;} // couldn't figure out how else // to use a single quote with php -r in a bash shell $sq = chr(39); // start array$arr1 = array( "name" => "\"{$sq}Testing{$sq}\"", "email" => "\"Yadda{$sq}s \"YADDa\"<script language={$sq}Testing{$sq} source={$sq}{$sq}></script>\"");$arr2 = array_map_assoc("strip_tags", $arr1); $arr3 = array_map_assoc("htmlentities", $arr2, array( ENT_QUOTES, ENT_QUOTES )); $arr4 = array_map_assoc("htmlentities", $arr2); $arr5 = array_map_assoc("strip_tags", $arr1, array( "<p>", "<p>" )); echo "-----\n\n"; var_dump($arr1, $arr2, $arr3, $arr4, $arr5); =========================================================================== OUTPUTS ON MACHINE: ----- array(2) { ["name"]=> string(11) ""'Testing'"" ["email"]=> string(63) ""Yadda's "YADDa"<script language='Testing' source=''></script>"" } array(2) { ["name"]=> string(11) ""'Testing'"" ["email"]=> string(17) ""Yadda's "YADDa""" } array(2) { [0]=> string(31) ""'Testing'"" [1]=> string(42) ""Yadda's "YADDa""" } array(2) { ["name"]=> string(21) ""'Testing'"" ["email"]=> string(37) ""Yadda's "YADDa""" } array(2) { [0]=> string(11) ""'Testing'"" [1]=> string(17) ""Yadda's "YADDa""" } rgds, Jochem