[ 實作問題 ] Notice: Undefined offset


Posted by vick12052002 on 2020-09-08

在實作簡易部落格的編輯文章的功能時,實作內容可參考,需要讀取資料庫中的資料,而在讀取並轉換資料時,遇到了如何印出 option 的標籤且是被選取中的,實作過程中遇到了 Notice: Undefined offset 的錯誤訊息,而且我發現我的第五個選項,沒有預期的印出,代表迴圈並無跑到第五圈。

實作程式碼如下:

<?php
      $type = escape($row['type']);
      ?>
      <select id="post_type" name="type" class="required">
        <?php
        // 預設選項為五個
        $option = [
          1 => '<option value="1" >北部</option>',
          2 => '<option value="2" >中部</option>',
          3 => '<option value="3" >南部</option>',
          4 => '<option value="4" >東部</option> ',
          5 => '<option value="5" >離島</option>'
        ];

        // 讀取資料庫中的 type 並替換 $option 的值
        $selectedOption = NULL;
        if ($type == 1) {
          $selectedOption = array_replace($option,array(1 => '<option value="1" selected>北部</option>'));
        }if ($type == 2) {
          $selectedOption = array_replace($option,array(2 => '<option value="2" selected>中部</option>'));
        }if ($type == 3) {
          $selectedOption = array_replace($option,array(3 =>'<option value="3" selected>南部</option>'));
        } if ($type == 4) {
          $selectedOption = array_replace($option,array(4 => '<option value="4" selected>東部</option>'));
        } if ($type == 5) {
          $selectedOption = array_replace($option,array(5 => '<option value="5" selected>離島</option>'));
        }
        $optionLength = count($selectedOption); // $selectedOption的長度
        echo $optionLength; // 確認 selectedOption的長度為 5 
          for($i = 0;$i < $optionLength; $i +=1){
          echo $selectedOption[$i] . '<br>';
          }
        ?>
      </select>

在實際輸出,$option[4]= 5 => '&#060;option value="5" >離島</option&#062;'並沒有被印出,並且出現Notice: Undefined offset: 0 in /opt/lampp/htdocs/alirong/week11/hw2/update.php on line 84 的錯誤訊息,因此爬文找到意思是並未設至 $option[0],因此讀取不到。

而在實作中只要將程式碼改為$i = 1$i <= $ $optionLength

for($i = 1;$i <= $optionLength; $i +=1){
          echo $selectedOption[$i] . '<br>';
          }

就可以順利印出 option 囉~

總結

這次遇到 Undefined offset 的問題,因 array 試圖讀取未賦值的 index = 0,而產生的錯誤,下次再設定資料庫的時候,也要考慮到結構,因為我沒特別設定 0 ,導致會出錯,不過可以運用 isset($array[0]) 來判斷是否為空值,這邊紀錄一下,下次要小心點

參考資料

Notice: Undefined offset: 0 in
PHP 陣列出現 Notice : Undefined offset 警告的解決辦法


#Undefined offset #PHP #解決辦法







Related Posts

D37_W4 寫作業

D37_W4 寫作業

W9_[ BE101 ] PHP 與 MySQL 實作練習 + w9  直播檢討

W9_[ BE101 ] PHP 與 MySQL 實作練習 + w9 直播檢討

Go 起手式之一

Go 起手式之一


Comments