我收到这个PHP错误,这是什么意思?
Notice: Undefined offset: 0 in
C:\xampp\htdocs\mywebsite\reddit_vote_tut\src\votes.php on line 41
Run Code Online (Sandbox Code Playgroud)
从这段代码:
<?php
include("config.php");
function getAllVotes($id)
{
$votes = array();
$q = "SELECT * FROM entries WHERE id = $id";
$r = mysql_query($q);
if(mysql_num_rows($r)==1)//id found in the table
{
$row = mysql_fetch_assoc($r);
$votes[0] = $row['votes_up'];
$votes[1] = $row['votes_down'];
}
return $votes;
}
function getEffectiveVotes($id)
{
$votes = getAllVotes($id);
$effectiveVote = $votes[0] - $votes[1]; //ERROR THROWN HERE
return $effectiveVote;
}
$id = $_POST['id'];
$action = $_POST['action'];
//get the current votes
$cur_votes = getAllVotes($id);
//ok, now update the votes
if($action=='vote_up') //voting up
{
$votes_up = $cur_votes[0]+1; //AND ERROR THROWN HERE
$q = "UPDATE threads SET votes_up = $votes_up WHERE id = $id";
}
elseif($action=='vote_down')
{
$votes_down = $cur_votes[1]+1;
$q = "UPDATE threads SET votes_down = $votes_down WHERE id = $id";
}
$r = mysql_query($q);
if($r)
{
$effectiveVote = getEffectiveVotes($id);
echo $effectiveVote." votes";
}
elseif(!$r) //voting failed
{
echo "Failed!";
}
?>
Run Code Online (Sandbox Code Playgroud)
Yon*_*Ran 81
你问在关键的价值0的$votes.它是一个不包含该键的数组.
数组$votes未设置,因此当PHP尝试访问0数组的键时,它会遇到[0]和[1]的未定义偏移量并抛出错误.
如果你有一个数组:
$votes = array('1','2','3');
Run Code Online (Sandbox Code Playgroud)
我们现在可以访问:
$votes[0];
$votes[1];
$votes[2];
Run Code Online (Sandbox Code Playgroud)
如果我们尝试访问:
$votes[3];
Run Code Online (Sandbox Code Playgroud)
我们将收到错误"通知:未定义的偏移量:3"
小智 11
首先,检查数组是否确实存在,您可以尝试类似
if (isset($votes)) {
// Do bad things to the votes array
}
Run Code Online (Sandbox Code Playgroud)
这个答案帮助了我/sf/answers/1321646931/
粉碎的原因 - 索引0没有设置.简单的$array = $array + array(null)做法.或者你应该检查是否通过设置索引0上的数组元素isset($array[0]).第二种变体对我来说是最好的方法.
| 归档时间: |
|
| 查看次数: |
283869 次 |
| 最近记录: |