PHP为json_encode函数创建值变量

问题描述 投票:0回答:2

我正在使用JSON API;我想创建一个带有值的变量,然后通过json_encode将其转换为JSON字符串。 (工作)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":[{'

有人知道如何在第二个代码片段中编写它吗?

php json encode
2个回答
3
投票

您只需要在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,
                )
            ),
        )
    )
);

Demo on 3v4l.org


0
投票

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]]];
© www.soinside.com 2019 - 2024. All rights reserved.