PHP json_decode — как декодировать результат в массив?

Функция json_decode без параметров автоматически декодирует JSON в тот формат, который считает предпочтительным.

Так например json строка true будет преобразована в значение true типа boolean.
Строки false и null также переведутся в соответствующие типы.

С массивами все немного сложнее: если массив с числовыми ключами идущими по порядку загодировать через функцию json_encode, а затем декодировать через json_decode - результат будет массивом.
Если же преобразуется ассоциативный массив или в случае, когда числовые ключи идут не по порядку, при декодировании станет экземпляром класса stdObject.

Как вместо объекта, получить обычный ассоциативный массив?

Преобразовать результат json_decode в массив достаточно просто — нужно передать вторым параметром true, вот так:

json_decode($json_string, true);

Вот полный код примера:

        $array = array(
            'one' => 1,
            'two' => 2,
        );

        $json = json_encode($array);

        echo $json; // {"one":1,"two":2}

        $result = json_decode($json, true);

        var_dump($result); 
 
        //array (size=2)
        //    'one' => int 1
        //    'two' => int 2

Подробную документацию можно найти здесь: json_decode
Обязательно прочитайте — у этой функции есть 4 параметра. Послдение 2 используются редко, но они могут пригодиться.

Сигнатура функции:

  json_decode(
    string $json,
    bool|null $associative = null,
    int $depth = 512,
    int $flags = 0
): mixed