JSON кодирует и декодирует (строка) числовой индексированный массив

Итак, я только что наткнулся на эту проблему с преобразованием массива в JSON и обратно в массив. Я использовал функцию для хранения массива в базе данных.

Код:

$array = array(
    1 => 'first',
    '200'  => 'second'
);
$array = json_encode($array);
$array = json_decode($array);
$array = (array)$array;

echo "<pre>"; var_dump($array);
var_dump(array_key_exists(1, $array));
var_dump(array_key_exists(200, $array));
var_dump(array_key_exists('1', $array));
var_dump(array_key_exists('200', $array));

Выход:

array(2) {
  ["1"]=>
  string(5) "first"
  ["200"]=>
  string(6) "second"
}
bool(false)
bool(false)
bool(false)
bool(false)

Любое объяснение? Решение? Спасибо?

Обновите до 7.2. См. wiki.php.net/rfc/convert_numeric_keys_in_object_array_casts.

user3942918 26.10.2018 06:04

@PaulCrovella, значит, в предыдущей версии нет обходного пути? Я работаю над этим древним веб-сайтом и все испорчу, если обновлю версию PHP только для этого. :)

ACD 26.10.2018 06:06

Это лишь одна из многих причин обновить используемую вами версию PHP.

user3942918 26.10.2018 06:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо того

$array = json_encode($array); $array = json_decode($array); $array = (array)$array;

вам нужно только добавить параметр для преобразования в массив в json_decode

$encoded_array = json_encode($array); $array = json_decode($encoded_array, true);

См. Документацию по json_decode() в http://php.net/manual/en/function.json-decode.php

Как перчатка! (не уверен, правильно ли я использую это выражение). Спасибо

ACD 26.10.2018 06:09

Другие вопросы по теме