【问题标题】:Jquery json array from php来自php的Jquery json数组
【发布时间】:2011-03-28 20:40:37
【问题描述】:

我正在尝试重现以下内容,但我使用数据库中的行

var allCustomers = [

    { name: 'Customer1', contacts: [
                { name: 'Bob', id: ['1'] },
                { name: 'Sue', id: ['2'] },
                { name: 'John', id: ['3'] }
        ]},

    { name: 'Customer2', contacts: [
                { name: 'Max', id: ['4'] },
                { name: 'Ross', id: ['5'] },
                { name: 'Sally', id: ['6'] }
        ]}
];

在 PHP 中,我从数据库中获取行,每个客户都有多个联系人,这是我正在努力解决的问题。目前我正在使用以下方法:

<script type="text/javascript">
var allCustomers = [
<?php
include('connection.php');
$stmt = $db->prepare("SELECT customer.customerID, customerName, contactID, contactName  FROM customer INNER JOIN customerContact ON customer.customerID = customerContact.customerID");
if ($stmt->execute()) 
{
    while ($row = $stmt->fetch(PDO::FETCH_OBJ)) 
    {
            echo "{ name: '".$row->customerName."', contacts: [
                { name: '".$row->contactName."', id: ['".$row->contactID."'] }                
        ]},";
        }           
}       
?>    
];

但显然这不是一种非常简洁的方式,而且它仅在客户只有一个联系人时才有效,否则它会复制客户并再次联系。

你有什么建议来解决这个问题,我可以使用 php decode json 函数或类似的东西吗?

感谢您的任何建议:)。

我正在尝试生成类似于 this 的帖子,但我需要联系人的 ID 才能回帖到服务器。

【问题讨论】:

    标签: php jquery multidimensional-array


    【解决方案1】:

    类似这样的:

    $data = array(
      array("name" => "Customer1", "contacts" => array(
        array("name" => "Bob", "id" => 1),
        array("name" => "Sue", "id" => 2),
        array("name" => "John", "id" => 3)
      )),
      array("name" => "Customer1", "contacts" => array(
        array("name" => "Max", "id" => 4),
        array("name" => "Ross", "id" => 5),
        array("name" => "Sally", "id" => 6)
      ))
    );
    
    echo json_encode($data);
    

    回复提问者的评论:

    $stmt = $db->prepare("SELECT customer.customerID, customerName, contactID, contactName  FROM customer INNER JOIN customerContact ON customer.customerID = customerContact.customerID");
    
    $data = array();
    
    if ($stmt->execute()) 
    {
        while ($row = $stmt->fetch(PDO::FETCH_OBJ)) 
        {
            if (!isset($data[$row->customerId])
            {
                $data[$row->customerId] = array('name' => $row->customerName, 'contacts' => array());
            }
    
            $data[$row->customerId]['contacts'][] = array('name' => $row->contactName, 'id' => $row->contactId);
        }           
    }   
    
    echo json_encode(array_values($data));
    

    【讨论】:

    • 谢谢,我最初是这样做的,但对如何遍历每个客户的多个联系人感到有点困惑?
    • 非常感谢,这正是我想要的 :) 当我回显数组时,是否可以不包括 customerid?再次感谢。
    • 更新了最后一行。希望通过这种方式,它会按您的预期工作。
    【解决方案2】:

    使用 PHP 创建 JSON,可以看这个教程:http://www.sencha.com/learn/Tutorial:Creating_JSON_Data_in_PHP

    【讨论】:

      【解决方案3】:

      无所不能:

      echo json_encode($array);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 2013-01-03
        相关资源
        最近更新 更多