I think ypur -1 is being treated as text Sent from my iPhone > On Mar 6, 2022, at 2:57 PM, Andrey Repin <anrdaemon@xxxxxxxxx> wrote: > > Greetings, Romain Moyne. > In reply to Your message dated Saturday, March 5, 2022, 16:20:24, > >> I did some more tests this night. > >> here is my code > >> var_dump($property['id_hash']); >> reset($property['id_hash']); >> $k1 = key($property['id_hash']); >> end($property['id_hash']); >> $k2 = key($property['id_hash']); >> echo PHP_EOL; >> var_dump($k1 === $k2); >> echo "hex k1=".bin2hex($k1).PHP_EOL; >> echo "hex k2=".bin2hex($k2).PHP_EOL; >> echo PHP_EOL."---".PHP_EOL; > >> here is the result : > >> array(3) { >> [-1]=> >> array(0) { >> } >> [26]=> >> array(1) { >> [0]=> >> int(10588090) >> } >> [-1]=> >> array(1) { >> [0]=> >> int(10588090) >> } >> } > > But where is the code that building the array?… > > >> bool(true) >> hex k1=2d31 >> hex k2=2d31 > >> it's nuts. I don't understand. It started to happen when I upgrade from php >> 7.2 to php 8.0 >> I am running the latest 8.0.16 php version. > >> the fact is I can't reproduce it, it happens after a few iteration around >> items. Sometimes it happens, sometimes not. > > Do you get this array from a call to some extension function perhaps? > >>> On Fri, 4 Mar 2022 at 20:15, AllenJB <php.lists@xxxxxxxxxxxxx> wrote: >> >>>> >>> On 04/03/2022 15:34, Romain Moyne wrote: >>>> Hi, >>>> >>>> working with php 8.0.16, i am meeting a hard bug I can't really explain. >>>> One of my script populates an array and doing a var_dump I have that : >>>> >>>> Notice the duplicate -1 key. It should not exist as php should erase >>>> the previous key. >>>> >>>> array(3) { >>>> [-1]=> >>>> array(1) { >>>> [0]=> >>>> int(10585779) >>>> } >>>> [18]=> >>>> array(2) { >>>> [0]=> >>>> int(10585779) >>>> [1]=> >>>> int(10586274) >>>> } >>>> [-1]=> >>>> array(1) { >>>> [0]=> >>>> int(10586274) >>>> } >>>> } >>>> >>>> >>>> And when doing a json_encode of that, I get that : >>>> "id_hash":{"-1":[10585779],"18":[10585779,10586274],"-1":[10586274]} >>>> >>>> >>>> I suspected a utf8 misencoding, but it seems it's not. >>>> >>>> Any thoughts? >>> >>> My best guess would be that one or more of the keys contains a >>> non-printable character, such as a null byte. >>> >>> You could us bin2hex on the keys to find out what's going on >>> >>> See for example: https://3v4l.org/BMLMI >>> >>> > > > > -- > Sincerely Yours, Andrey Repin <anrdaemon@xxxxxxxxx> >