【发布时间】:2014-03-25 05:37:14
【问题描述】:
我收到了一个未定义的变量和未定义的索引通知,我认为 isset() 应该取消这些通知。在这个例子中,我正在阅读一个由个人姓名和他们的公司组成的数据库。我想分离出独特的公司,所以我知道他们代表了多少次。这是我期望它做的事情:
- 打开数据库,统计条目,加载表中的第一行。
- 'for' 循环内的第一个'if' 查看是否存在具有公司名称哈希值的$comp 变量。如果是,请增加计数
- 如果没有设置 $comp 变量,这是我第一次看到这家公司,所以转到“其他”。
但是,isset() 似乎不起作用,因为 PHP 仍在向我发送有关该行代码的通知,并且我的变量和索引未定义。
$r1Q = mysql_query("SELECT * FROM totals", $db);
$r1C = mysql_num_rows($r1Q);
$r1 = mysql_fetch_array($r1Q);
$title = "Companies Most Represented in DB";
printf("
<div class=\"content\">
<h2>%s</h2>
<center>
<table border=1 bgcolor=#ffffff>
<tr bgcolor=#cc9933>
<th width=150>Company</th>
<th width=50>Times</th>
</tr>
", $title);
// loop through 1 time for each entry in the db
for($j=0;$j<$r1C;$j++) {
$company = $r1[4];
// have i seen this company before?
if(isset($comp[$company])) {
$cnt[$company]++;
$cnt1[$company]++;
}
else {
$comp[$company] = $r1[4];
$cnt[$company] = 1;
$cnt1[$company] = 1;
}
【问题讨论】:
-
“那行代码”是……什么?就此而言,错误消息的文本是什么?
-
我看不到您创建 $comp 数组的位置。上面还有代码吗?
-
抱歉,“那行代码”是
if(isset())所在的行。如果您在下面的其他帖子中看到我的 cmets,我现在已经定义了数组,但我仍然收到有关未定义变量的通知。如果我只是简单地关闭通知 (error_reporting(E_ALL ^ E_NOTICE);),则页面打印正常。