Re: I have two identical keys in an array.

[email protected] (Curtis Maurand)
Newsgroups php.general
Message-ID <[email protected]>
I think ypur -1 is being treated as text

Sent from my iPhone

> On Mar 6, 2022, at 2:57 PM, Andrey Repin <[email protected]> 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 <[email protected]> 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 <[email protected]>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.