The object I get back from my sql query is a single row with about 50 columns. It returns an object like this:
[
{
"State": "Alabama",
"State Abbrev": "AL",
"County": "Madison",
"FIPS": "01089",
"msa": "3440",
"msaname": "HUNTSVILLE, AL",
"cbsa": "26620",
"cbsaname": "Huntsville, AL",
"Population": "346892",
"Length of Life Rank": "4",
"Quality of Life Rank": "6",
}
]
What I need is a format like this:
[
{ “column”: “State”, “value”: “Alabama” },
{ “column”: “State Abbrev”, “value”: “AL” },
...
]
How can I transpose the result to match my requirements? I'm getting the data like so:
$sql4 = "SELECT d.* FROM `mytable` s
INNER JOIN `secondtable` c ON
c.`zip_code` = s.`zip_code`
INNER JOIN `anothertable` d ON
d.`fips` = c.`fips`
WHERE s.`ID` = '{$prov_number1}' group by `ID`";
$result4 = $dbh->query($sql4)->fetchAll(PDO::FETCH_ASSOC);
$data['demo_info'] = $result4;
header('Content-type: application/json');
echo json_encode($data);
EDIT: some good answers, but I think my results are coming back wrong because my data is stuctured differently than what I have above. If I var_dump
$result4
, the structure is more like this:
array(1) {
[0]=>
array(93) {
["State"]=>
string(7) "Alabama"
["State Abbrev"]=>
string(2) "AL"
["County"]=>
string(7) "Madison"
["FIPS"]=>
string(5) "01089"
["msa"]=>
string(4) "3440"
["msaname"]=>
string(14) "HUNTSVILLE, AL"
["cbsa"]=>
string(5) "26620"
}}
I'm thinking this might change the answers, as I've tried a few and get nothing in the "column" and all my data crammed into the "values".
Using foreach
loop
$result = array();
$i = 0;
foreach($arr as $key => $value){
$result[$i]['column'] = $key;
$result[$i]['value'] = $value;
$i++;
}
echo json_encode($result);
And using array_map
$result = array_map(function($k,$v){return array('column' => $k,'value' => $v);}, array_keys($arr),$arr);
echo json_encode($result);
$finalresult = array();
$icount = 0 ;
foreach($result4 as $row) {
foreach ( $row as $key => $val ) {
$finalresult[$icount]["column"] = $key;
$finalresult[$icount]["value"] = $val;
$icount++;
}
}
$data['demo_info'] = $finalresult;
Try this:
$data = json_decode( $json );
$result = array();
$n=0;
foreach($data[0] as $k=>$v) {
$result[$n]['column'] = $k;
$result[$n]['value'] = $v;
$n++;
}
$result_json = json_encode( $result );
Simply Generate the array like that and return -
$newArray = array_map(function($value, $key){
return array('column' => $key, 'value' => $value);
}, $array, array_keys($array));
json_encode($newArray);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.