Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-使用特定索引/键将数组转换为json_Php_Arrays_Json - Fatal编程技术网

PHP-使用特定索引/键将数组转换为json

PHP-使用特定索引/键将数组转换为json,php,arrays,json,Php,Arrays,Json,我收到一个数组,希望通过在PHP中使用带有特定索引/键的json_encode将其转换为json。数组结果: {"StatusCode": "2800", "card": { "studentcard": { "1000": [ { "Name": "Jerome", "CardNumber": "512314512312", "CardExpiry": "2017-03-24", "CardType": "Library", }, { "Name": "Jerome", "C

我收到一个数组,希望通过在PHP中使用带有特定索引/键的json_encode将其转换为json。数组结果:

{"StatusCode": "2800",
 "card": {
 "studentcard": {
 "1000": [
{
 "Name": "Jerome",
 "CardNumber": "512314512312",
 "CardExpiry": "2017-03-24",
 "CardType": "Library",
},
{
 "Name": "Jerome",
 "CardNumber": "512314512312-b",
 "CardExpiry": "2017-10-22",
 "CardType": "IT",
}],
"1001": [
{
 "Name": "Jason",
 "CardNumber": "512314512313",
 "CardExpiry": "2017-10-22",
 "CardType": "Library",
}]
}
JSON中的预期结果

[
 {
  "Name": "Jerome",
  "CardNumber": "512314512312",
  "CardExpiry": "2017-03-24",
  "CardType": "Library"
 },
 {
  "Name": "Jerome",
  "CardNumber": "512314512312-b",
  "CardExpiry": "2017-10-22",
  "CardType": "IT"
 },
 {
  "Name": "Jason",
  "CardNumber": "512314512313",
  "CardExpiry": "2017-10-22",
  "CardType": "Library"
 }
]

如何删除StatusCode、card、studentcard、1000并将其编码为JSON中的预期结果?

使用
JSON\u decode
array\u merge
函数的有效JSON字符串解决方案:

$json_str = '{
    "StatusCode": "2800",
    "card": {
        "studentcard": {
            "1000": [{
                "Name": "Jerome",
                "CardNumber": "512314512312",
                "CardExpiry": "2017-03-24",
                "CardType": "Library"
            }, {
                "Name": "Jerome",
                "CardNumber": "512314512312-b",
                "CardExpiry": "2017-10-22",
                "CardType": "IT"
            }],
            "1001": [{
                "Name": "Jason",
                "CardNumber": "512314512313",
                "CardExpiry": "2017-10-22",
                "CardType": "Library"
            }]
        }
    }
}';

$data = json_decode($json_str, true);
$data = array_merge($data["card"]["studentcard"]["1000"], $data["card"]["studentcard"]["1001"]);
$json = json_encode($data, JSON_PRETTY_PRINT);

echo $json;
输出:

[
    {
        "Name": "Jerome",
        "CardNumber": "512314512312",
        "CardExpiry": "2017-03-24",
        "CardType": "Library"
    },
    {
        "Name": "Jerome",
        "CardNumber": "512314512312-b",
        "CardExpiry": "2017-10-22",
        "CardType": "IT"
    },
    {
        "Name": "Jason",
        "CardNumber": "512314512313",
        "CardExpiry": "2017-10-22",
        "CardType": "Library"
    }
]

您可以使用
调用用户函数数组('array\u merge',…)展平该数组。

看到它在或上运行


请注意,在JSON中,对象的最后一个属性后面不能有逗号(即右大括号之前)。此外,您还缺少两个右大括号。

初始json无效这只是一个猜测,但他可能需要一个解决方案,该解决方案不需要硬编码
1000
1001
,并且可以处理
学生卡中的两个以上元素。您的解决方案非常有效。别想了。感谢对json格式的更正。编辑
$obj = json_decode($json, true);
$result = call_user_func_array('array_merge', $obj["card"]["studentcard"]);
$json = json_encode($result, JSON_PRETTY_PRINT);