【发布时间】:2013-07-19 14:17:07
【问题描述】:
好吧,这不仅仅是奇怪......
这是我的代码:
public function results($id,$pattern=3)
{
$this->load->library('session');
if (!$this->session->userdata('logged_in'))
{
$this->session->set_flashdata('return_url',$this->uri->uri_string());
redirect('log/in','refresh');
}
else
{
$this->load->model('projects');
$proj = (array)$this->projects->getProjectById($id);
print_r($proj);
$progressPercentage = number_format((float)( ($proj['progress'] * 100) / $proj['total'] ), 2, '.', '');
}
}
现在,问题来了:
- 当 NO
$pattern传递给控制器时,整个事情都可以正常工作。 -
当我传递一些参数时,例如
mysite.com/project/results/45/4(pattern=4),我收到以下错误:A PHP Error was encountered Severity: Notice Message: Undefined index: progress Filename: controllers/project.php Line Number: 75
奇怪的是$id 和$pattern 都可以“读取”。
当我 print_ring $proj 就在有关 undefined index 的行之前,我得到的结果是:
Array ( [id] => 21240 [email] => my@gmail.com [url] => somewebsite.com [domains] => another_domain [progress] => 198 [total] => 199 [别名] => 测试项目#3 [状态] => 完成)
您自己也可以清楚地看到,progress 索引就在那里。
那么,问题可能是什么?有什么奇怪的知道 CI 错误吗?
这是var_dump($proj,$proj['progress']); 给出的:
array(8) {
["id"]=>
string(5) "21240"
["email"]=>
string(20) "my@gmail.com"
["url"]=>
string(27) "somewebsite.com"
["domains"]=>
string(84) "another_domain"
["progress"]=>
string(3) "198"
["total"]=>
string(3) "199"
["alias"]=>
string(15) "Test Project #3"
["status"]=>
string(8) "complete"
}
string(3) "198"
【问题讨论】:
-
如果写
var_dump($proj, $proj['progress']);而不是print_r($proj);会输出什么? -
@smhnaji 看看,我重新编辑了原来的问题。
-
另请注意,它不仅找不到
progress。它看不到 any 索引... :S -
我知道它很脏,但是如果你
$progress = $proj['progress'];并在下一行的函数中使用 $progress 会发生什么? -
只有未定义的索引:进度?还是总索引未定义错误?
标签: php arrays codeigniter undefined-index