Bug #81011 [Opn->Ver]: mb_convert_encoding removes references from arrays

From: Date: Tue, 04 May 2021 13:34:11 +0000
Subject: Bug #81011 [Opn->Ver]: mb_convert_encoding removes references from arrays
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-233677@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81011&edit=1

 ID:                 81011
 Updated by:         cmb@php.net
 Reported by:        mvalihora at gmail dot com
-Summary:            mb_convert_encoding removes array alements
+Summary:            mb_convert_encoding removes references from arrays
-Status:             Open
+Status:             Verified
 Type:               Bug
 Package:            mbstring related
 Operating System:   All
 PHP Version:        7.4.18
-Assigned To:        
+Assigned To:        cmb
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2021-05-04 13:04:20] mvalihora at gmail dot com

Description:
------------
when some elements in array are changed by reference and this array is then converted using
mb_convert_encoding, these elements are removed or empty. Warning is emmited
"mb_convert_encoding(): Object is not supported in ...", but function returns result
without mentioned elements. Best see in code example.

Test script:
---------------
// any sample array, structure does not matter
$array = [
    'ads' => [
        123 => ['name' => 'this', 'id' => 444],
        234 => ['name' => 'that', 'id' => 555],
    ],
    'other' => ['one', 'two']
    ];
         
// we modify array elements using reference     
foreach( $array['ads'] as &$ad ){
    $ad['premium'] = (int)($ad['id'] == 555);
}

// print_r prints array contents OK
print_r($array);

// mb_convert_encoding emits Warning, but returns result where modified array elements are removed -
in this case 'ads' element

print_r(mb_convert_encoding($array, 'UTF-8', 'UTF-8'));

Expected result:
----------------
array elements does not disappear, mb_convert_encoding does not emit warning

Actual result:
--------------
mb_convert_encoding returns result where modified array elements are removed. mb_convert_encoding
emits warning


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



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


Thread (4 messages)

« previous php.bugs (#233677) next »