-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);
} ?>

编辑 :

我试图弄清楚为什么我的第一个下拉列表没有显示正确的值。盟友列表 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>
4

3 回答 3

4

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

 if ($allies[0] == 'No Wrestlers In Database')
于 2012-04-17T15:51:32.830 回答
3

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

于 2012-04-17T15:51:44.793 回答
2

您对数组声明有误解。

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

$allies[]用于将对象附加到数组的末尾。键将自动递增。

$allies[''],这个, '' 是一个字符串,因此,您的值将保存到带有键 '' 的数组中

您可以在此处阅读有关数组键的更多信息

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

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

Null将被强制转换为空字符串,即键 null 将实际存储在 "" 下。

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

如果您想查看“数据库中没有摔跤手”是否在您的数组中,您必须使用in_array()函数。

于 2012-04-17T16:09:52.393 回答