【问题标题】:Put output in json_encode?将输出放在 json_encode 中?
【发布时间】:2011-10-27 19:02:13
【问题描述】:

在此处//print_r($reunits); 的以下php 代码中输出:http://pastebin.com/RbqZ5kHV

但在这里echo json_encode($reunits); 输出为:http://pastebin.com/GFdHkg5Y

如果将$reunits = array('reunits'=>$units_data); 用作:$reunits .=... 我在echo json_encode($reunits); 中得到此输出:"ArrayArrayArray"

如何将//print_r($reunits); 中的输出与echo json_encode($reunits); 中的输出类似?怎么解决?

$reunits = "";
//$tourf_id   = $this->input->post('tour_name');
$tourf_id = '102';
//$query_r = $this->db->order_by('id','desc')->get_where('tour_foreign_residence', array('relation' => $tourf_id));
$query_r = array('77192276', '15190364', '15183965')
foreach($query_r->result() as $idx=>$val){
    $hotel_id = $val->hotel_id;
    $query = $this->db->get_where('tour_foreign_units', array('hotel_id' => $hotel_id));
        $units_data = array();
        foreach ($query->result() as $index=>$row) {
            $units_data[] = array(
                'name' => $row->name,
                'price' => $row->price,
                'extra' => $row->extra,
                'hotel_id' => $row->hotel_id
            );
        }
    $reunits =  array('reunits'=>$units_data);
    //print_r($reunits);
}
echo json_encode($reunits);

这个输出由 json_encode 发送到 jquery 中的 ajax 调用。

【问题讨论】:

    标签: php javascript jquery json codeigniter


    【解决方案1】:

    如果我理解您的要求,而不是尝试使用 .= 追加到数组中,您应该使用 [] 表示法追加到数组:

    //Initialize reunits as an array
    $reunits = array();
    
    
    foreach($query_r->result() as $idx=>$val){
        $hotel_id = $val->hotel_id;
        $query = $this->db->get_where('tour_foreign_units', array('hotel_id' => $hotel_id));
            $units_data = array();
            foreach ($query->result() as $index=>$row) {
                $units_data[] = array(
                    'name' => $row->name,
                    'price' => $row->price,
                    'extra' => $row->extra,
                    'hotel_id' => $row->hotel_id
                );
            }
    
    
        // Append the array $units_data onto $reunits
        // since $units_data is already an array
        $reunits[] = $units_data;
    }
    
    // Now the JSON output should look like you expect
    echo json_encode($reunits);
    

    【讨论】:

      【解决方案2】:

      如果你用string concatenation operator (.)连接数组,数组将被转换成一个字符串(在PHP中是"Array")然后连接起来。

      改用array operator

      $reunits+=...
      

      这将合并两个数组。如果 union 不是你想要的,你可以使用array_merge

      不要忘记将顶部的变量也初始化为空数组:

      $reunits = array();
      

      【讨论】:

        猜你喜欢
        • 2012-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-19
        • 2014-02-28
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        相关资源
        最近更新 更多