Php jQuery:如何解析多维数组?

Php jQuery:如何解析多维数组?,php,jquery,ajax,Php,Jquery,Ajax,我不确定数组是否太深,但除了键和取消定义之外,我似乎什么也得不到。救命啊 我正在使用Codeigniter进行开发。下面是PHP,然后是jQuery: $term = $this->input->post('search_term'); $this->db->like('book_title', $term); $search_query = $this->db->get('books'); $return = array(); $i

我不确定数组是否太深,但除了键和取消定义之外,我似乎什么也得不到。救命啊

我正在使用Codeigniter进行开发。下面是PHP,然后是jQuery:

 $term = $this->input->post('search_term');

  $this->db->like('book_title', $term);

  $search_query = $this->db->get('books');

  $return = array();

  $i = 0;

  if ($search_query->num_rows() > 1) {

   foreach($search_query->result() as $s) {

    $return['books']['book_id'] = $s->book_id;
    $return['books']['book_title'] = $s->book_title;
    $return['books']['book_price'] = $s->book_price;

    $i++;

   }

  } elseif ($search_query->num_rows() == 1) {

    echo 1;

    $i = 0;

    $return['book_id'] = $search_query->row('book_id');
    $return['book_title'] = $search_query->row('book_title');
    $return['book_price'] = $search_query->row('book_price');


  } elseif ($search_query->num_rows() == 0) {

    echo 0;

  }



  echo json_encode($return);
Javascript

$("#search").change(function() {

  var searchTerm = $(this).val();

  $.post("/contentcreator/search_by_term", { search_term: searchTerm }, function(data) {

     $("#book_scroller").empty();

     var lengthHolder = data.books;

     for (var i = 0; i > data.books.length; i++) {

         var row = '<li id="book_item_' + l + '">' + data.books['book_title'] +'</li>';

         $("#book_scroller").append(row);


     };

     i++;


  }, "json");

});
$("#search").change(function() {
  var searchTerm = $(this).val();
      $.post("/contentcreator/search_by_term", { search_term: searchTerm }, function(data) {
         $("#book_scroller").empty();
         for (var i = 0; i > data.length; i++) {
            var book = data[i];
            var row = '<li id="book_item_' + book.id + '">' + book.book_title +'</li>';
                $("#book_scroller").append(row);    
         };    
      }, "json");
 });

谢谢

我的一个建议是,无论返回多少本书,返回的json都应该采用相同的格式。设置方式如果只有一个匹配项,则返回一个包含id、title、price的数组,但如果有多个匹配项,则返回一个包含单个项目的数组,即id、title、price的数组。在我看来,您总是希望它返回一个书籍数组——每个书籍都是一个包含id、标题和价格的对象。注意,我还修复了javascript的一些小问题。免责声明:无论如何我都不是php程序员——我的语法肯定是错误的

试试这个:

$i = 0;

foreach($search_query->result() as $s) {

    $return[$i]['book_id'] = $s->book_id;
    $return[$i]['book_title'] = $s->book_title;
    $return[$i]['book_price'] = $s->book_price;

    $i++;

}
Javascript

$("#search").change(function() {

  var searchTerm = $(this).val();

  $.post("/contentcreator/search_by_term", { search_term: searchTerm }, function(data) {

     $("#book_scroller").empty();

     var lengthHolder = data.books;

     for (var i = 0; i > data.books.length; i++) {

         var row = '<li id="book_item_' + l + '">' + data.books['book_title'] +'</li>';

         $("#book_scroller").append(row);


     };

     i++;


  }, "json");

});
$("#search").change(function() {
  var searchTerm = $(this).val();
      $.post("/contentcreator/search_by_term", { search_term: searchTerm }, function(data) {
         $("#book_scroller").empty();
         for (var i = 0; i > data.length; i++) {
            var book = data[i];
            var row = '<li id="book_item_' + book.id + '">' + book.book_title +'</li>';
                $("#book_scroller").append(row);    
         };    
      }, "json");
 });

你能重新格式化一下吗?几乎无法阅读。格式细节:简短版本:用四个空格缩进所有代码。另外,查看PHP生成并发送到浏览器的实际JSON字符串是什么会很有用。