未定义的数组索引

时间:2012-04-17 15:49:54

标签: php undefined-index

我想弄清楚为什么我在这行的视图中得到一个未定义的索引:

<?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>

3 个答案:

答案 0 :(得分:4)

因为在分配时,赋值索引在数组中从0递增到n。所以,你需要这个:

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

答案 1 :(得分:3)

使用$ arr []不会为键''创建值,而是在数组尾部推送元素。

答案 2 :(得分:2)

你对数组声明有误解。

$ allies ['']不等于$ allies []

$ allies [] ,用于将您的对象追加到数组的末尾。钥匙会自动增加。

$ allies [''] ,这一个,''是一个字符串,所以,你的值将保存到带有键的数组''

您可以阅读有关数组here

的键的更多信息
  

键可以是整数或字符串。值可以是任何类型。

     包含有效整数的

字符串将强制转换为整数类型。例如。键“8”实际上将存储在8下。另一方面,“08”将不会被强制转换,因为它不是有效的十进制整数。

     

Null 将转换为空字符串,即键null实际存储在“”下。

如果您真的希望它显示,您可以更改您的控制器 $ allies [] $ allies ['']

如果您想查看阵列中是否有“数据库中没有摔跤手”,则必须使用 in_array()功能。