Творческий тупик с ассоциативным массивом в PHP

Iceman

Логирую такую информацию в серверном скрипте PHP:

var_dump(substr($Data, 2)): string(14) "{"65535":"??"}"

$Request = (array)json_decode(substr($Data, 2));

var_dump($Request): array(1) { ["65535"]=> string(2) "??" }

var_dump($RequestKeys): array(1) { [0]=> string(5) "65535" }

var_dump($Key): string(5) "65535"

Notice: Undefined index: 65535 in D:\Programms\OpenServer\domains\localhost\WS\index.php on line 147

На 147-й строке такой код:

switch($Request[$Key][0]){

То есть, мне нужен первый символ элемента массива с ключом $Key, который согласно логам равен строке "65535", и получен он был из того же $Request.

Как этот элемент может быть "Undefined index"-ом в $Request-е, из которого он и был взят??? Я пробовал и strval($Key), и intval($Key) - всё равно не определённый элемент.

PS: ключи перебираются в цикле foreach($RequestKeys as $Key) для сравнения с другим массивом на предмет одинаковых ключей для выполнения определённых действий.

1 ответ

Iceman

$jSonArray = json_decode($Data, true); //Создаст ассоциативный массив из данных, которые пришли в формате json

foreach ($RequestKeys as $key) {
    if (array_key_exists((int)$key, $jSonArray)) {
        var_dump($jSonArray[(int)$key]); //Вернет нужное Вам значение
    }
}

Проверка array_key_exists() позволит избежать ошибки, если в массиве не будет нужного Вам ключа

licensed under cc by-sa 3.0 with attribution.