dongpeng8994 2014-02-14 17:41
浏览 62

在PHP中创建JSON结构

$query = "SELECT `contact_id`, `user_id`, `date_backup`, `first_name`, `last_name` FROM tbl_contacts WHERE date(`date_backup`) = (SELECT MAX(date(`date_backup`)) FROM tbl_contacts WHERE `user_id`= '$userId' ) ORDER BY `date_backup` DESC, `contact_id` ASC";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)) {
    $contacts = array(array());
    $contactId = $row['contact_id'];
    $names["first_name"] = $row['first_name'];
    $names["last_name"] = $row['last_name'];
    $contacts["names"][] = $names;

    // Phone
    $phoneQuery = "SELECT * FROM tbl_phone_details WHERE contact_id = '$contactId' AND date(`date_backup`) = (SELECT MAX(date(`date_backup`)) FROM tbl_phone_details WHERE `contact_id`= '$contactId')";
    $phoneResult = mysql_query($phoneQuery);

    $total = mysql_affected_rows();
    if($total >= '1') {
        while($phoneRow = mysql_fetch_assoc($phoneResult)) {
            $phones["phone_number"] = $phoneRow['phone_number'];
            $phones["phone_type"] = $phoneRow['phone_type'];
            $contacts["phones"][] = $phones;
        }
    } else {
        $contacts["phones"][] = array();
    }


    // Email    
    $emailQuery = "SELECT * FROM `tbl_email_details` WHERE `contact_id` = '$contactId' AND date(`date_backup`) = (SELECT MAX(date(`date_backup`)) FROM tbl_email_details WHERE `contact_id`= '$contactId')";
    $emailResult = mysql_query($emailQuery);

    $total = mysql_affected_rows();
    if($total >= '1') {
        while($emailRow = mysql_fetch_assoc($emailResult)) {        
            $emails["email_address"] = $emailRow['email_address'];
            $emails["email_type"] = $emailRow['email_type'];
            $contacts["emails"][] = $emails;
        }
    } else {
        $contacts["emails"][] = array();
    }   

    // Address  
    $addressQuery = "SELECT * FROM `tbl_address_detail` WHERE `contact_id` = '$contactId' AND date(`date_backup`) = (SELECT MAX(date(`date_backup`)) FROM tbl_address_detail WHERE `contact_id`= '$contactId')";
    $addressResult = mysql_query($addressQuery);

    $total = mysql_affected_rows();
    if($total >= '1') {
        while($addressRow = mysql_fetch_assoc($addressResult)) {
            $address["street"] = $addressRow['street'];
            $address["city"] = $addressRow['city'];
            $address["state"] = $addressRow['state'];
            $address["zip"] = $addressRow['zip'];
            $address["country"] = $addressRow['country'];
            $address["addressType"] = $addressRow['addressType'];

            $contacts["address"][] = $address;
        }
    } else {
        $contacts["address"][] = array();
    }

    $contectInfoJson["contacts"][] = $contacts;
}

$allContactJson["AllContacts"] = $contectInfoJson;

header('Content-Type: application/json');
echo json_encode($allContactJson);

OUTPUT OF CODE :-

AllContacts: {
userId: "15",
contacts: [
{
0: [ ], // Not needed
names: [ // Instead of array i need simple object of names
{
first_name: "ABC",
last_name: "XYZ"
}
],
phones: [
{
phone_number: "+911234567890",
phone_type: "Work"
},
{
phone_number: "+919876543210",
phone_type: "Home"
}
],
emails: [
[ ] //This is also extra and not needed.
],
address: [
{
street: "India",
city: "",
state: "",
zip: "",
country: "",
addressType: ""
}
]
},

REQUIRED OUTPUT:-

AllContacts: {
userId: "15",
contacts: [
{
names:
{
first_name: "ABC",
last_name: "XYZ"
},
phones: [
{
phone_number: "+911234567890",
phone_type: "Work"
},
{
phone_number: "+919876543210",
phone_type: "Home"
}
],
emails: [],
address: [
{
street: "India",
city: "",
state: "",
zip: "",
country: "",
addressType: ""
}
]
},

I am facing 2-3 small problem in the code.

First is that i am getting 0 : [] on every start of the object.

2nd one is names is array and i want it to be object not array.

3rd is emails :[ [] ], i want blank array if data is not available, but i am getting array inside array. I just want emails :[].

  • 写回答

1条回答 默认 最新

  • dongzi9196 2014-02-14 17:48
    关注
    1. Replace $contacts = array(array()); with $contacts = array();. Should remove 0 : [].
    2. $contacts["emails"][] = array(); is triggered probably, so try to replace it with $contacts["emails"] = array();
    3. Replace $contacts["names"][] = $names; with $contacts["names"] = $names;
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据