2016-04-20 24 views
1

im hier eine json_encode tunjson kodieren mit codeigniter Rahmen

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)); 
} 

die Ausgabe im aus dem obigen Code bekommen ist

enter image description here

Aber ich möchte etwas, was wie dieses

enter image description here

Antwort

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)); 

ersetzen Sie einfach diesen Code mit Ihrem foreach & echo Aussage.

Sie sollten nie strip_tags in Verbindung mit json_encode verwenden, da Sie bereits die Daten codieren es Empfänger Wahl ist zu tun, was er will auch in diesem Prozess Sie die Codierung brechen könnten.

Auch sollten Sie Ausgabebibliothek verwenden, um Antwort zu senden, müssen Sie nichts von Ihrem Controller Echo. siehe hier https://ellislab.com/codeigniter/user-guide/libraries/output.html um weitere Informationen zu

+0

Dank viel @arifmahmudrana – Arvind

0

Wenn Sie die numerischen Werte möchten als solche ausgegeben werden, (anstelle von Strings) Sie können versuchen wollen:

json_encode($return, JSON_NUMERIC_CHECK); 

Um die ausgegebenen JSON-Format gut (Einzüge usw.) verwenden:

json_encode($return, JSON_PRETTY_PRINT); 

Sie verschiedene Kombinationen der oben als pro json_encode's options verwenden können.

Wie für die Boolesche Werte (anstelle von „wahr“ und „falsch“ als Strings zurück), müssen Sie sie als boolean Typen werfen zuerst:

$status = (bool) true;