ID:               38684
 User updated by:  z_rules55 at hotmail dot com
 Reported By:      z_rules55 at hotmail dot com
 Status:           Open
 Bug Type:         Feature/Change Request
 Operating System: WinXP
 PHP Version:      5.1.6
 New Comment:

It's been a week since I submitted this, and it's still not assigned to
anyone. Do I need to include more information?


Previous Comments:
------------------------------------------------------------------------

[2006-09-01 20:45:17] z_rules55 at hotmail dot com

Description:
------------
While working recently on a project that involves JSON, I saw that it
might be necessary to make sure that a an array's keys are in utf-8
encoding for when I pass it to the JSON encoder, since JSON expects
stuff to be in utf-8. One possible way to do this with PHP's existing
array functions is with array_combine(), and converting all the
elements in the keys array to utf-8 before combining it with the
elements array, but this seems like it could become more tedious with
nested arrays. I tried using foreach($array as &$key => $val) to
convert the key's encoding in each iteration, but got an error saying
"Fatal error: Key element cannot be a reference". So I wrote my own
function (included below).

Why isn't there an array_key_walk_recursive() function, or something of
the kind? A function that would let you apply a callback to all keys in
an array. Or, let you use foreach with a referenced key as I mentioned.

Reproduce code:
---------------
<?php
function array_convert_key_encoding($array) {
    $encoded_array = array();
    foreach($array as $key => $val) {
        if(is_string($key) && is_array($val)) {
            $encoded_array[utf8_encode($key)] =
array_convert_key_encoding($val);
        }
        else if(is_string($key)) {
            $encoded_array[utf8_encode($key)] = $val;
        }
        else {
            $encoded_array[$key] = $val;
        }
    }
    return $encoded_array;
}
?>



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=38684&edit=1

Reply via email to