代码之家  ›  专栏  ›  技术社区  ›  Dodinas

向JSON编码的数组添加其他对象

  •  8
  • Dodinas  · 技术社区  · 15 年前

    它看起来像这样:

    $sth = mysql_query("SELECT id, name FROM users");
    
    $json = array();
    
        while($row = mysql_fetch_assoc($sth)) {
            $json['name'] = $row['name'];
            $json['id'] = $row['id'];
            $data[] = $json;
        }
    
    print json_encode($data);
    

    这将返回:

    [{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"}]
    

    我的问题有两个方面:

    弗斯特 ,如何手动将其他对象添加到此输出?例如,假设我想添加: {"id":"444","name":"A New Name"}

    因此,它看起来像:

    [{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"},{"id":"444","name":"A New Name"}]
    

    第二

    $sth = mysql_query("SELECT id, title FROM another_table");
    
    $json = array();
    
        while($row = mysql_fetch_assoc($sth)) {
            $json['name'] = $row['title'];
            $json['id'] = $row['id'];
            $data[] = $json;
        }
    
    print json_encode($data);
    

    这样我就可以在JSON数组中填充这两个表,从而在autosuggest中显示为附加选项。

    希望这是有意义的,因为我已经努力阐明我要实现的目标。

    4 回复  |  直到 15 年前
        1
  •  13
  •   meder omuraliev    15 年前

    继续往上推 $data 数组。

    $json = array();
    
        while($row = mysql_fetch_assoc($sth)) {
            $json['name'] = $row['name'];
            $json['id'] = $row['id'];
            $data[] = $json;
        }
    
    $custom = array('name'=>'foo', 'id' => 'bar');
    $data[] = $custom;
    

    最后,做你的工作 json_encode . 假设您不是指将它与多个ajax调用合并到JS本身中。

    如果您有单独的脚本,请将它们合并到一个php页面中。

        2
  •  4
  •   vineet    10 年前

    $temp = json_encode($json);  //$json={"var1":"value1","var2":"value2"}   
    $temp=substr($temp,0,-1);
    $temp.=',"variable":"'.$value.'"}';
    
        3
  •  1
  •   Colin Fine    15 年前

    您可以编辑JSON(文本),但是在编码之前修改数组要容易得多。 还是我遗漏了什么?

        4
  •  0
  •   XstreamINsanity    15 年前

    我不是这些领域的专家,但我会试试看是否能帮上忙。请尝试下列操作之一:

    $sth = mysql_query("SELECT id, name FROM users union SELECT id, name FROM (SELECT id, title as name from another_table) as T2"); 
    
    
        $json = array(); 
    
            while($row = mysql_fetch_assoc($sth)) { 
                $json['name'] = $row['name']; 
                $json['id'] = $row['id']; 
            }
    
        $json['name'] = 'A new name';
        $json['id'] = '444';
        $data[] = $json; 
    
        print json_encode($data);
    

    我从来没有做过PHP,所以我在做假设。我也从未使用过MySql,所以有更多的假设。

    方案2:

    $sth = mysql_query("SELECT id, name FROM users"); 
    
    
        $json = array(); 
    
            while($row = mysql_fetch_assoc($sth)) { 
                $json['name'] = $row['name']; 
                $json['id'] = $row['id']; 
            }
    
    $sth = mysql_query("SELECT id, title from another_table"); 
    
    
            while($row = mysql_fetch_assoc($sth)) { 
                $json['name'] = $row['title']; 
                $json['id'] = $row['id']; 
            }
    
        $json['name'] = 'A new name';
        $json['id'] = '444';
        $data[] = $json; 
    
        print json_encode($data);