Поместить вывод в json_encode? - PullRequest
       1

Поместить вывод в json_encode?

0 голосов
/ 27 октября 2011

В следующем php-коде здесь //print_r($reunits); выводится это: 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 на вызов ajax в jquery.

Ответы [ 2 ]

0 голосов
/ 27 октября 2011

Если я понимаю, что вы спрашиваете, вместо того, чтобы пытаться добавить к массиву с .=, вы должны использовать нотацию [] для добавления к массиву:

//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);
0 голосов
/ 27 октября 2011

Если вы объедините массивы с помощью оператора объединения строк (.) , массивы будут преобразованы в строку (то есть "Array" в PHP), а затем объединены.

Вместо этого используйте оператор массива :

$reunits+=...

, который объединит два массива.Если объединение не то, что вы ищете, вы можете использовать array_merge.

Не забудьте также инициализировать переменную сверху как пустой массив:

$reunits = array();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...