Bug #81011 [Ver->Csd]: mb_convert_encoding removes references from arrays
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 references from arrays
-Status: Verified
+Status: Closed
Type: Bug
Package: mbstring related
Operating System: All
PHP Version: 7.4.18
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Fixed as <https://github.com/php/php-src/commit/0cafd53d18c26358242172e308b4258bbd934e8d>.
Previous Comments:
------------------------------------------------------------------------
[2021-05-04 13:44:03] cmb@php.net
The following pull request has been associated:
Patch Name: Fix #81011: mb_convert_encoding removes references from arrays
On GitHub: https://github.com/php/php-src/pull/6938
Patch: https://github.com/php/php-src/pull/6938.patch
------------------------------------------------------------------------
[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)