PHP создать переменную значения для функции json_encode - PullRequest
0 голосов
/ 16 апреля 2019

Я использую JSON API; Я хочу создать переменную со значениями, а затем преобразовать ее в строку JSON через json_encode. (Рабочая) строка JSON выглядит так:

$data = '
{
"function":"setArticleImages",
"paras":{
    "user":"'.$user.'",
    "pass":"'.$pass.'",
    "product_model":"'.$productsModel.'",
    "images":{
        "products_id":'.$products_id.',
        "image_name":"'.$imageName.'",
        "image":"'.$image.'",
        "products_images":[{
                "products_id":'.$products_id.',
                "image_name":"'.$imageName2.'",
                "image":"'.$image2.'"
            }        ]
    }
}}
';

Я сейчас пытался написать это так и использовать json_encode:

$data = array(
    "function" => "setArticleImages",
    "paras" => array(
        "user" => $user,
        "pass" => $pass,
        "product_model" => $productsModel,
        "images" => array(
            "products_id" => $products_id,
            "image_name" => $imageName,
            "image" => $image,
            "products_images" => array(
                "products_id" => $products_id,
                "image_name" => $imageName2,
                "image" => $image2,
            ),
        )
    )
);
$data = json_encode($data);

К сожалению, это не работает. Проблемы вроде бы на '"products_images" => array('. Я не знаю, как справиться с '[' части '"products_images":[{'.

Кто-нибудь знает, как написать это во втором фрагменте кода?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

Вам просто нужно добавить дополнительный уровень массива к элементу products_images, чтобы получить численно проиндексированный массив ассоциативных массивов, предоставляя вам массив объектов нужной формы:

$data = array(
    "function" => "setArticleImages",
    "paras" => array(
        "user" => $user,
        "pass" => $pass,
        "product_model" => $productsModel,
        "images" => array(
            "products_id" => $products_id,
            "image_name" => $imageName,
            "image" => $image,
            "products_images" => array(
                array(
                    "products_id" => $products_id,
                    "image_name" => $imageName2,
                    "image" => $image2,
                )
            ),
        )
    )
);

Демо на 3v4l.org

0 голосов
/ 16 апреля 2019

"{}" в нотации JSON является массивом PHP с буквенно-цифровым ключом.

Итак:

$array = ["foo" => [1,2,3], "bar" => [4,5,6]

будет преобразовано в строку JSON:

{ foo : [1,2,3], bar: [4,5,6]}

Так что, если вы ищете JSON, который выглядит следующим образом

[{ foo : [1,2,3], bar: [4,5,6]}]

Вам нужно будет создать массив с цифровыми ключами, который содержит ваш буквенно-цифровой массив:

$array = [["foo" => [1,2,3], "bar" => [4,5,6]]];
// same as
$array = [ 0 => ["foo" => [1,2,3], "bar" => [4,5,6]]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...