2016-04-20 4 views
1

をイムCodeIgniterの使用JSONエンコードjson_encodeをやって、ここでフレームワーク

public function get_posts_for_category($user_id,$category_id,$page) 
{ 
    $cat_id = $this->ApiModel->get_category_id($category_id); 
    $total_row = $this->ApiModel->get_category_posts_count($cat_id->category); 
    $per_page = 2; 
    $total_pages = $total_row/$per_page; 
    $posts = $this->ApiModel->get_category_posts($cat_id->category,$per_page,$page); 
    $data = array(); 
    foreach($posts as $post) 
    { 
     $fav = $this->ApiModel->get_favourite($user_id,$post->pid); 
     if($fav == 1) 
     { 
      $status = 'true'; 
     } 
     else 
     { 
      $status = 'false'; 
     } 
     $array = array('pid' => $post->pid, 'uid' => $post->uid, 'title' => $post->title, 'slug' => $post->slug, 'content' => $post->content, 'image' => $post->image, 'time_stamp' => $post->time_stamp); 
     $data[] = array('page' => $page, 'posts' => $array, 'is_favorite' => $status); 
    } 
    echo strip_tags(json_encode($data)); 
} 

上記のコードから取得した出力イムは

enter image description here

ですが、私はこの

enter image description hereのようないくつかのことをしたいです

答えて

0
<?php 
    public function get_posts_for_category($user_id,$category_id,$page) 
    { 
    $cat_id = $this->ApiModel->get_category_id($category_id); 
    $total_row = $this->ApiModel->get_category_posts_count($cat_id->category); 
    $per_page = 2; 
    $total_pages = $total_row/$per_page; 
    $posts = $this->ApiModel->get_category_posts($cat_id->category,$per_page,$page); 
    $data = array(); 
    foreach($posts as $post) 
    { 
    $fav = $this->ApiModel->get_favourite($user_id,$post->pid); 
    if($fav == 1) 
    { 
    $status = 'true'; 
    } 
    else 
    { 
    $status = 'false'; 
    } 
    $array = array('pid' => $post->pid, 'uid' => $post->uid, 'title' => $post->title, 'slug' => $post->slug, 'content' => $post->content, 'image' => $post->image, 'time_stamp' => $post->time_stamp, 'is_favorite' => $status); 
    $data[] = array('page' => $page, 'posts' => $array, 'total_posts' => count($posts), 'total_pages' => $total_pages); 
    } 
    echo strip_tags(json_encode($data)); 
    } 
    ?> 
0
$return = array(
     'page' => $page, 
     'total_posts' => $total_row, 
     'total_page' => $total_pages, 
    ); 
    $data = []; 
    foreach($posts as $post) 
    { 
     $fav = $this->ApiModel->get_favourite($user_id, $post->pid); 
     if($fav == 1) 
     { 
      $status = 'true'; 
     } 
     else 
     { 
      $status = 'false'; 
     } 
     $array = array('pid' => $post->pid, 'uid' => $post->uid, 'title' => $post->title, 'slug' => $post->slug, 'content' => $post->content, 'image' => $post->image, 'time_stamp' => $post->time_stamp, 'is_favorite' => $status); 
     $data[] = $array; 
    } 
    $return['posts'] = $data; 
    $this->output->set_content_type('application/json'); 
    $this->output->set_output(json_encode($return)); 

ちょうどあなたforeach & echo文でこのコードを置き換えます。

json_encodeと一緒にstrip_tagsを使用することは決してありません。受信者がこのプロセスでも何をしようとしても、受信者が選択したデータを既にエンコードしているためです。

また、CI出力ライブラリを使用して応答を送信する必要があります。コントローラから何もエコーしないでください。あなたは(文字列の代わりに)のような出力であるように数値をご希望の場合は、試してみてください詳細

+0

おかげでたくさんの@arifmahmudrana – Arvind

0

はこちらhttps://ellislab.com/codeigniter/user-guide/libraries/output.htmlを参照してください。

json_encode($return, JSON_NUMERIC_CHECK); 

がきれいに出力されたJSONをフォーマットするには(インデントなど)使用:

json_encode($return, JSON_PRETTY_PRINT); 

json_encode's optionsのようにさまざまな組み合わせを使用できます。

ブール値(代わりに「真」と「偽」の文字列として返される)については、あなたが最初のブール型としてそれらをキャストする必要がありますが:

$status = (bool) true; 
関連する問題