看板 PHP 關於我們 聯絡資訊
我根據版友建議使用了var_dump查看資料內容 內容是正確的 array(31) { [0]=> object(stdClass)#18 (2) { ["specialty_id"]=> string(1) "1" ["specialty_name"]=> string(9) "小兒科" } [1]=> object(stdClass)#19 (2) { ["specialty_id"]=> string(1) "2" ["specialty_name"]=> string(15) "心臟血管科" } [2]=> object(stdClass)#20 (2) { ["specialty_id"]=> string(1) "3" ["specialty_name"]=> string(15) "代謝內分泌" } ....後面省略 我將比較完整的錯誤資訊與程式碼貼上來 再請大家給我點意見 錯誤訊息 A PHP Error was encountered Severity: Notice Message: Undefined offset: 31 Filename: controllers/specialty.php Line Number: 61 A PHP Error was encountered Severity: Notice Message: Trying to get property of non-object Filename: controllers/specialty.php Line Number: 61 A PHP Error was encountered Severity: Notice Message: Undefined offset: 31 Filename: controllers/specialty.php Line Number: 62 A PHP Error was encountered Severity: Notice Message: Trying to get property of non-object Filename: controllers/specialty.php Line Number: 62 A PHP Error was encountered Severity: Notice Message: Undefined offset: 31 Filename: controllers/specialty.php Line Number: 63 A PHP Error was encountered Severity: Notice Message: Trying to get property of non-object Filename: controllers/specialty.php Line Number: 63 以下為controller的程式碼 發生錯誤的61-63是for($i=0; $i<$page_rows; $i++) 中間的內容 public function show($page=1) { $this->VerifyAndReturnLogin(); echo $this->load->view('v_header','',true); echo $this->load->view('v_menu','',true); echo $this->draw_content($page); echo $this->load->view('v_footer','',true); } private function draw_content($page) { $this->load->model('SpecialtyModel'); $query = $this->SpecialtyModel->selectAll(); $row = $query->result(); $cnt = $query->num_rows(); var_dump($row); $page_rows = 50; // 每頁幾行 $final = ($cnt%$page_rows)==0? intval($cnt/$page_rows):intval($cnt/$page_rows)+1; $next = $page==$final?$page:$page+1; $last = $page==1?$page:$page-1; $arrlink = array(); array_push($arrlink, '<a href="' . site_url("/specialty/show/1") .'">第一頁 </a>&nbsp;&nbsp;'); array_push($arrlink, '<a href="' . site_url("/specialty/show/$last") .'">上一 頁</a>&nbsp;&nbsp;'); array_push($arrlink, '<select onchange="window.location=this.value;" >'); for($i=1; $i<=$final; $i++) { if($i==$page) array_push($arrlink, '<option selected value="'.site_url("/specialty/show/$i")."\" >第 $i 頁</option>"); else array_push($arrlink, '<option value="'.site_url("/specialty/show/$i")."\" >第 $i 頁</option>"); } array_push($arrlink, "</select>&nbsp;&nbsp;"); array_push($arrlink, '<a href="' . site_url("/specialty/show/$next") .'">下一 頁</a>&nbsp;&nbsp;'); array_push($arrlink, '<a href="' . site_url("/specialty/show/$final").'">最後 一頁</a>&nbsp;&nbsp;'); $this->load->library('table'); $this->table->set_template(array('table_open'=>'<table class="CLS_SHOWTABLE">')); $this->table->set_heading('edit', 'specialty_id','醫療科別' ); for($i=0; $i<$page_rows; $i++) { $index = ($page-1)*$page_rows+$i; $this->table->add_row( '<a href="' . site_url('specialty/edit/' . $row[$index]->specialty_id ). '">編輯</a> <a href="' . site_url('specialty/delete/' . $row[$index]->specialty_id) . '">移除</a>', $row[$index]->specialty_id, $row[$index]->specialty_name ); } $table = $this->table->generate(); $html = array( "<h2>specialty</h2>", "<hr />", implode($arrlink) . '&nbsp;&nbsp;<a href="'. site_url('specialty/edit') . '">新增一筆資料</a>', $table, implode($arrlink) ); return implode($html); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.131.202
liaosankai:從錯誤訊息來看,似乎是索引多了1,foreach也這樣嗎? 07/02 08:19
liaosankai:從你的var_dump出來的array(31),所以最終索引應該是30 07/02 08:20
ireullin:是的....foreach也是一樣的錯誤訊息 07/02 09:09
ireullin:是否有可能result的結果被gc提前回收 07/02 09:09
ireullin:若有可能....是否有方法去朝這方向偵錯 07/02 09:10
ireullin:$index的計算邏輯寫錯了,造成溢出陣列 07/02 09:43
ireullin:讓大家麻煩了,真不好意思 07/02 09:43