php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #75826 Unintended array key integer to string conversion after unsetting in foreach
Submitted: 2018-01-16 22:06 UTC Modified: 2018-01-17 04:18 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: leon dot valkenborg at blackpepper dot co dot nz Assigned:
Status: Not a bug Package: JSON related
PHP Version: 7.2.1 OS: Ubuntu
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: leon dot valkenborg at blackpepper dot co dot nz
New email:
PHP Version: OS:

 

 [2018-01-16 22:06 UTC] leon dot valkenborg at blackpepper dot co dot nz
Description:
------------
json_encode will parse the PHP array as if it has string keys when a numerical key is unset.
var_dump() shows expected results. So i assume this issue is wit json_encode().

Test script:
---------------
<?
$array = array('a','b','c');

unset($array[0]);

echo json_encode($array);
?>

Expected result:
----------------
["b","c"]

Actual result:
--------------
{"1":"b","2":"c"}

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2018-01-16 22:13 UTC] spam2 at rhsoft dot net
the bug is more that it don't behave that way before the unset because there is nothing like arrays without kyes in PHP

php > $x = ['a', 'b', 'c'];
php > print_r($x);
Array
(
    [0] => a
    [1] => b
    [2] => c
)
 [2018-01-16 22:24 UTC] leon dot valkenborg at blackpepper dot co dot nz
-Status: Open +Status: Closed
 [2018-01-16 22:24 UTC] leon dot valkenborg at blackpepper dot co dot nz
This is normal behavior for non-sequential arrays.

https://stackoverflow.com/questions/2118339/how-to-encode-to-json-encoded-array-from-non-sequential-array
 [2018-01-17 04:18 UTC] requinix@php.net
-Status: Closed +Status: Not a bug
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Dec 27 01:01:28 2024 UTC