我想弄清楚为什么我在这行的视图中得到一个未定义的索引:
<?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>
答案 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()功能。