PHP数组为json格式

时间:2017-04-13 05:25:42

标签: php arrays json

我正在尝试基于我在数组中获得的一些php数据创建一个图表,如果我运行以下

<?php     
    $out = array_values($periodi);  
    echo json_encode($out, JSON_PRETTY_PRINT); 
?>

我得到这个json格式

   [
    "Francia",
    "Italia",
    "Italia",
    "Germania",
    "Afghanistan",
    "Italia"
]

虽然我正在寻找的是获得这样的格式。无论不同的值如何在roder中添加一个专有名称以获得某些内容?

var data = [{
    "name": "Tokyo",
    "data": 3.0
}, {
    "name": "NewYork",
    "data": 2.0
}, {
    "name": "Berlin",
    "data": 3.5
}, {
    "name": "London",
    "data": 1.5
}];

的print_r($ periodi);

  

数组([0] =&gt; Moderno [1] =&gt; Contemporaneo [2] =&gt; Contemporaneo [3]   =&GT; Contemporaneo [4] =&gt; Contemporaneo)

我有另一个包含不同数据但仍然格式错误的数组:

  

数组([francese] =&gt;数组([maschio] =&gt;数组([0] =&gt; 1)   [femmina] =&gt;数组([0] =&gt; 1))[chimica] =&gt;数组([maschio] =&gt;   数组([0] =&gt; 1 [1] =&gt; 1))[fisica] =&gt;数组([maschio] =&gt;数组(   [0] =&gt; 1 [1] =&gt; 1)[femmina] =&gt;数组([0] =&gt; 1))[scienze] =&gt;   数组([maschio] =&gt;数组([0] =&gt; 1))[inglese] =&gt;阵列(   [maschio] =&gt;数组([0] =&gt; 1))[spagnolo] =&gt;数组([maschio] =&gt;   数组([0] =&gt; 1))[italiano] =&gt;数组([femmina] =&gt;数组([0] =&gt;   1)))

 {
        "maschio": [
            true
        ],
        "femmina": [
            true
        ]
    },
    {
        "maschio": [
            true,
            true
        ]
    },
    {
        "maschio": [
            true,
            true
        ],
        "femmina": [
            true
        ]
    },
    {
        "maschio": [
            true
        ]
    },
    {
        "maschio": [
            true
        ]
    },
    {
        "maschio": [
            true
        ]
    },
    {
        "femmina": [
            true
        ]
    }
]

3 个答案:

答案 0 :(得分:2)

    $jsonArr = array();
    foreach($periodi as $key => $val){
        $jsonArr[$key]['name'] = $val;
        $jsonArr[$key]['data'] = $key; //there is no source for priority 
          //in your array so i just put $key as priority variable
    }

    json_encode($jsonArr);

答案 1 :(得分:1)

你应该像这样制作你的阵列......

Array
(
    [0] => Array
        (
            ['name'] => 'Tokyo'
            ['data'] => 3
        )

    [1] => Array
        (
            ['name'] => 'NewYork'
            ['data'] => 2
        )
)

如何制作阵列?

$final_array = array();
foreach($data as $key=>$value)
{
    $final_array[]=array(
                "name"=>$key,
                "data"=>$value
               );
}

然后您只需要json_encode $final_array

答案 2 :(得分:0)

PHP code demo

<?php
$array=
    [
    "Moderno",
    "Contemporaneo",
    "Contemporaneo",
    "Contemporaneo",
    "Contemporaneo"
];

$array=array_count_values($array);
$result=array();
foreach($array as $key => $value)
{
    $result[]=array("name"=>$key,"data"=>$value);
}
print_r(json_encode($result));