Reputation: 153
I am trying to create a chart based on some php data i got in an array, if I run the following
<?php
$out = array_values($periodi);
echo json_encode($out, JSON_PRETTY_PRINT);
?>
I get this json format
[
"Francia",
"Italia",
"Italia",
"Germania",
"Afghanistan",
"Italia"
]
While what I am looking for is to get a format like this. Regardless of different values how do I add a propriety name in roder to get something along those lines?
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);
Array ( [0] => Moderno [1] => Contemporaneo [2] => Contemporaneo [3] => Contemporaneo [4] => Contemporaneo )
I have another array with different data but still the format is wrong:
Array ( [francese] => Array ( [maschio] => Array ( [0] => 1 ) [femmina] => Array ( [0] => 1 ) ) [chimica] => Array ( [maschio] => Array ( [0] => 1 [1] => 1 ) ) [fisica] => Array ( [maschio] => Array ( [0] => 1 [1] => 1 ) [femmina] => Array ( [0] => 1 ) ) [scienze] => Array ( [maschio] => Array ( [0] => 1 ) ) [inglese] => Array ( [maschio] => Array ( [0] => 1 ) ) [spagnolo] => Array ( [maschio] => Array ( [0] => 1 ) ) [italiano] => Array ( [femmina] => Array ( [0] => 1 ) ) )
{
"maschio": [
true
],
"femmina": [
true
]
},
{
"maschio": [
true,
true
]
},
{
"maschio": [
true,
true
],
"femmina": [
true
]
},
{
"maschio": [
true
]
},
{
"maschio": [
true
]
},
{
"maschio": [
true
]
},
{
"femmina": [
true
]
}
]
Upvotes: 0
Views: 73
Reputation: 15141
<?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));
Upvotes: 0
Reputation: 562
You should make your array like this ...
Array
(
[0] => Array
(
['name'] => 'Tokyo'
['data'] => 3
)
[1] => Array
(
['name'] => 'NewYork'
['data'] => 2
)
)
How to make the array ?
$final_array = array();
foreach($data as $key=>$value)
{
$final_array[]=array(
"name"=>$key,
"data"=>$value
);
}
Then you just need to json_encode
the $final_array
.
Upvotes: 1
Reputation: 409
$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);
Upvotes: 2