我有一个非常简单的PHP,它从我的数据库中获取数据View并生成一个JSON文件,然后将其写入我的服务器。
这是来自5家不同公司的员工名单。
我希望能够做到的是,每个返回的公司的第一位员工都要插入代表公司的项目(包括徽标)。
所以,它看起来像这样......
公司1 雇员 雇员 雇员 公司2 雇员 公司3 雇员 EMPLOYEE
目前我只是让所有员工。
这是我生成JSON的PHP
<?php
$db=new PDO('mysql:dbname=DB;host=localhost;','username','pass');
$row=$db->prepare('select * from Employee_JSON');
$row->execute();//execute the query
$json_data=array();//create the array
foreach($row as $rec)//foreach loop
{
$json_array['employee_id']=$rec['employee_id'];
$json_array['employee_firstname']=$rec['employee_firstname'];
$json_array['employee_surname']=$rec['employee_surname'];
$json_array['employee_image']=$rec['employee_image'];
$json_array['employee_status']=$rec['employee_status'];
$json_array['company_id']=$rec['company_id'];
$json_array['company_name']=$rec['company_name'];
$json_array['company_hex']=$rec['company_hex'];
//here pushing the values in to an array
array_push($json_data,$json_array);
}
//built in PHP function to encode the data in to JSON format
echo json_encode($json_data);
//write to json file
$fp = fopen('data/employees.json', 'w');
fwrite($fp, json_encode($json_data));
fclose($fp);
?>
这是我的JSON示例返回。
[{
"employee_id": "9",
"employee_firstname": "Test",
"employee_surname": "Name",
"employee_image": "9.jpg",
"employee_status": "1",
"company_id": "1",
"company_name": "CDE",
"company_hex": "99C440"
}, {
"employee_id": "49",
"employee_firstname": "Testy",
"employee_surname": "Test",
"employee_image": "ce_holding.png",
"employee_status": "1",
"company_id": "1",
"company_name": "CDE",
"company_hex": "99C440"
}, {
"employee_id": "8",
"employee_firstname": "Tester",
"employee_surname": "McTest",
"employee_image": "8.jpg",
"employee_status": "1",
"company_id": "1",
"company_name": "CDE",
"company_hex": "99C440"
}]
我在数据库中有两个表,一个包含我想要的图像的URL的Company表和一个包含所有员工数据的Employee表。
这是公司表结构
这是Employee表结构
然后我在那些上创建一个内部联接来创建我在PHP样本中调用的数据库View。
CREATE VIEW `Employee_JSON`
AS SELECT
`Employee`.`employee_id` AS `employee_id`,
`Employee`.`employee_firstname` AS `employee_firstname`,
`Employee`.`employee_surname` AS `employee_surname`,
`Employee`.`employee_image` AS `employee_image`,
`Employee`.`employee_status` AS `employee_status`,
`Company`.`company_id` AS `company_id`,
`Company`.`company_name` AS `company_name`,
`Company`.`company_hex` AS `company_hex`
FROM (`Employee` join `Company` on((`Employee`.`employee_company_id` = `Company`.`company_id`))) where (`Employee`.`employee_active` = 1) order by `Company`.`company_name`,`Employee`.`employee_surname`,`Employee`.`employee_firstname`;
所以我的预期输出看起来像这样,在那里添加&#34; is_company&#34;:&#34; 1&#34;进入JSON可以帮助我的应用程序检测是否显示公司形象或员工形象。
[{
"employee_id": "0",
"employee_firstname": "Company",
"employee_surname": "Name",
"employee_image": "companyimage.jpg",
"employee_status": "1",
"company_id": "1",
"company_name": "CDE",
"is_company": "1",
"company_hex": "99C440",
}, {
"employee_id": "9",
"employee_firstname": "Test",
"employee_surname": "Name",
"employee_image": "9.jpg",
"employee_status": "1",
"company_id": "1",
"company_name": "CDE",
"company_hex": "99C440"
}, {
"employee_id": "49",
"employee_firstname": "Testy",
"employee_surname": "Test",
"employee_image": "ce_holding.png",
"employee_status": "1",
"company_id": "1",
"company_name": "CDE",
"company_hex": "99C440"
}, {
"employee_id": "8",
"employee_firstname": "Tester",
"employee_surname": "McTest",
"employee_image": "8.jpg",
"employee_status": "1",
"company_id": "1",
"company_name": "CDE",
"company_hex": "99C440"
}]
然后我将这个JSON文件读入iOS应用程序以显示内容。
我有什么想法可以实现添加这些额外的节点?
非常感谢
西蒙
答案 0 :(得分:0)
这样的事情可能会起到作用:
<?php
//Before this you should have the data you want to insert in the JSON of each company. I guess you should get it from a database.
$json_data_c=array();
foreach($row as $rec_company){ //I supose you have the information in the $row variable after a query to the database
$json_array['company_field1']=$rec_company['company_field1'];
....
$json_data_c[$rec_company['company_id']]=$json_array;
}
//end of company information
$db=new PDO('mysql:dbname=DB;host=localhost;','username','pass');
$row=$db->prepare('select * from Employee_JSON');
$row->execute();//execute the query
$json_data=array();//create the array
$company_id_loop=-1;
foreach($row as $rec)//foreach loop
{
if($company_id_loop!=$rec['company_id']){
//insert here the json with the data of the company $rec['company_id']
$json_array_company=$json_data_c[$rec['company_id']];
array_push($json_data, $json_array_company);
$company_id_loop=$rec['company_id'];
}
$json_array['employee_id']=$rec['employee_id'];
$json_array['employee_firstname']=$rec['employee_firstname'];
$json_array['employee_surname']=$rec['employee_surname'];
$json_array['employee_image']=$rec['employee_image'];
$json_array['employee_status']=$rec['employee_status'];
$json_array['company_id']=$rec['company_id'];
$json_array['company_name']=$rec['company_name'];
$json_array['company_hex']=$rec['company_hex'];
//here pushing the values in to an array
array_push($json_data,$json_array);
}
//built in PHP function to encode the data in to JSON format
echo json_encode($json_data);
//write to json file
$fp = fopen('data/employees.json', 'w');
fwrite($fp, json_encode($json_data));
fclose($fp);
?>