未定义的偏移量PHP,不确定它的作用

时间:2017-12-19 10:19:23

标签: php session operators undefined

有人可以帮忙吗,我在PHP error.log中有以下错误

  

[Tue Dec 19 12:08:22.887574 2017] [:error] [pid 32196] [client xx.xx.xx.x:20560] PHP注意:未定义的偏移量:/ var / www / html / page中的8第55行的.php,referer:view.php?1x = 8

和我认为导致这个问题的PHP代码是:

$i = isset($_SESSION['i']) ? $_SESSION['i'] : 0;
// echo $_SESSION['websites'][$i];
$website = explode(";", $_SESSION['websites'][$i]);
// echo $website[0];
$i++;
$_SESSION['i'] = $i;

我真的不知道$i = isset($_SESSION['i']) ? $_SESSION['i'] : 0;做了什么

谢谢

session_start();
$i = isset($_SESSION['i']) ? $_SESSION['i'] : 0;
if ($_SESSION['i'] < $sesioni1x) {  
    // echo $_SESSION['websites'][$i];
    $website = explode(";", $_SESSION['websites'][$i]);
    // echo $website[0];
    $i++;
    $_SESSION['i'] = $i;
        header("Location: $website[0]"); //redirect
        die();
        // echo $website[0];
        // echo $sesioni1x;
        // echo $website[0]." Frame-URL<br>";
        // $_SESSION['actual_website'] = $website[0];
}           
if ($_SESSION['i'] == $sesioni1x) {
    $handle = fopen($list1x, "a"); //open file to append content to csv file
    fputcsv($handle, $_SESSION['addwebsite'], ";"); //insert line in opened file
    fclose($handle); //close file
    header("Location: index.php"); //redirect
    die(); 
    // echo "session = var";
    }

这是我得到此警告的完整代码,我必须说脚本正在完成他的工作,但我想摆脱错误

源中的$_SESSION['i']为0

4 个答案:

答案 0 :(得分:5)

这是三元运算符。基本上它是一个简单的if / else。

$i = (isset($_SESSION['i']) ? $_SESSION['i'] : 0);

为了帮助您理解这一代码在一行

if(isset($_SESSION['i'])){
    $i=$_SESSION['i'];
}
else{
    $i=0;
}

答案 1 :(得分:2)

$i = isset($_SESSION['i']) ? $_SESSION['i'] : 0;

上面的代码只是一个if / else别的 这将检查$_SESSION['i']是否已设置然后将其值分配给$i,否则会将0分配给$i变量。

现在查看您的问题,看起来您的$_SESSION['i']已设置且其值为8,因此$ i = 8,

现在,$website = explode(";", $_SESSION['websites'][$i]);这就像检查你的$_SESSION['website']数组并尝试从数组中找到尚未设置的8th元素,因此它会给出一个未定义的错误。

答案 2 :(得分:1)

(e)? r1:r2是条件语句。 如果表达式e为真,则值为r1,如果e为假,则值为r2。所以

$i = isset($_SESSION['i']) ? $_SESSION['i'] : 0;

表示&#34;我是$ _SESSION [&#39; i&#39;],如果$ _SESSION [&#39; i&#39;]已设置,否则为0&#34;。

答案 3 :(得分:0)

session_start();
$i = isset($_SESSION['i']) ? $_SESSION['i'] : 0;
if ($_SESSION['i'] < $sesioni1x) {  
    // echo $_SESSION['websites'][$i];
    $website = explode(";", $_SESSION['websites'][$i]);
    // echo $website[0];
    $i++;
    $_SESSION['i'] = $i;
        header("Location: $website[0]"); //redirect
        die();
        // echo $website[0];
        // echo $sesioni1x;
        // echo $website[0]." Frame-URL<br>";
        // $_SESSION['actual_website'] = $website[0];
}           
if ($_SESSION['i'] == $sesioni1x) {
    $handle = fopen($list1x, "a"); //open file to append content to csv file
    fputcsv($handle, $_SESSION['addwebsite'], ";"); //insert line in opened file
    fclose($handle); //close file
    header("Location: index.php"); //redirect
    die(); 
    // echo "session = var";
    }

这是我得到此警告的完整代码,我必须说脚本正在完成他的工作,但我想摆脱错误

源中的$_SESSION['i']为0