2012-04-17 82 views
-1

我試圖找出爲什麼我得到一個未定義的索引視圖中的這一行:未定義指數

<?php if ($allies[''] == 'No Wrestlers In Database') { 

控制器:

if (empty($rosterList)) { 
     $allies[] = 'No Wrestlers In Database'; 
} 
else 
{ 
     $allies[] = 'Please Select An Option'; 
     foreach ($rosterList AS $ally) 
     { 
      $allies[$ally->id] = $ally->rosterName; 
     } 
} 

查看:

<?php if ($allies[''] == 'No Wrestlers In Database') { 
    echo $allies['']; 
} 
else { 
    echo form_dropdown('ally1', $allies, $alliesList->ally1ID); 
} ?> 

編輯:

我想弄清楚爲什麼我的第一個下拉列表不顯示正確的值。 alliesList的print_r

Array 
(
[0] => stdClass Object 
    (
     [id] => 1 
     [rosterListID] => 1 
     [ally1ID] => 2 
     [ally2ID] => 3 
     [ally3ID] => 2 
     [ally4ID] => 3 
     [ally5ID] => 2 
    ) 

) 

盟友的print_r

Array 
(
[0] => Please Select An Option 
[1] => Kid Wonder 
[3] => Oriel 
[2] => Test Character 
) 

編輯2:

這裏是我造的,但是在說試圖讓非對象的屬性我的視圖文件得到一個錯誤。

//Get member's allies 
    $alliesList = $this->bios->getRosterAlliesByRosterID($this->session->userdata('defaultRosterListID')); 
    echo "<pre>"; 
    print_r($alliesList); 
    echo "</pre>"; 
    // Get list of members 
    $rosterList = $this->bios->getAllRoster(); 
    $allies = array(); 
    if (empty($rosterList)) { 
     $allies[''] = 'No Wrestlers In Database'; 
    } 
    else 
    { 
     $allies[''] = 'Please Select An Option'; 
     foreach ($rosterList AS $ally) 
     { 
      $allies[$ally->id] = $ally->rosterName; 
     } 
    } 
    echo "<pre>"; 
    print_r($alliesList); 
    echo "</pre>"; 

<?php echo form_label('Ally 1', 'ally1'); ?> 
<div> 
    <?php if (in_array('No Wrestlers In Database', $allies)) { 
     echo 'No Wrestlers In Database'; 
    } 
    else { 
     echo form_dropdown('ally1', $allies, $alliesList->ally1ID); 
    } ?> 
</div> 
+2

因爲您使用鍵「'''索引到'$ allies',並且數組中沒有這樣的鍵。 – Jon 2012-04-17 15:51:00

+0

我會建議你不要使用空字符串作爲密鑰 – 2012-04-17 15:52:10

+0

[PHP:「Notice:Undefined variable」和「Notice:Undefined index」]的可能重複(http://stackoverflow.com/questions/4261133/php- notice-undefined-variable-and-notice-undefined-index) – Jocelyn 2013-03-29 11:55:26

回答

4

因爲分配時,分配索引在數組中增加從0到n。所以,你需要這樣的:

if ($allies[0] == 'No Wrestlers In Database') 
+0

查看我的帖子中的編輯。謝謝回覆。 – 2012-04-17 16:03:33

+0

沒關係它的工作原理 – 2012-04-17 16:06:52

3

使用$改編[]不爲關鍵「」創造價值,但在數組尾推元素。

2

你對數組聲明的誤解。

$同盟[ '']不等於$同盟[]

$同盟[],是使用爲對象追加到數組的末尾。該鍵將自動遞增。

$盟友[「」],這一個「」是一個字符串,那麼,你的價值就會保存到數組鍵「」

你可以閱讀更多有關陣列的關鍵here

密鑰可以是整數或字符串。該值可以是任何類型。

包含有效整數的字符串將被轉換爲整數類型。例如。鍵「8」實際上將被存儲在8以下。另一方面,「08」不會被轉換,因爲它不是有效的十進制整數。

將被轉換爲空字符串,即鍵null實際上將存儲在「」下。

如果你真的希望它顯示,您可以更改您的控制器 $盟友[]$盟友[「」]

如果你想看看「沒有摔跤在數據庫'在你的陣列中,你必須使用in_array()函數。

+0

在我的文章中查看編輯2。 – 2012-04-17 16:17:39