未定义的偏移量:-1 PDO在for循环


Undefined offset: -1 PDO in for loop

我使用pdo连接mysql数据库和pdo::FETCH_ASSOC函数。

但是当运行代码时,会出现多行错误。

未定义偏移量:-1或未定义偏移量:61

if($pays[$i]['price'] < $pays[($i-1)]['price'])

elseif($pays[$i]['price'] > $pays[($i-1)]['price'])

.$pays[$i]['price'].

我的完整代码

<?php
$params        = null; //or any params
$mrkfPDO       = new PDO('mysql:host=localhost;dbname=usd', 'root', '', array(
    PDO::ATTR_PERSISTENT => true,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
));
$mrkfStatement = $mrkfPDO->prepare("SELECT price FROM uds limit 0,100");
$mrkfStatement->execute($params);
$pays = $mrkfStatement->fetchAll(PDO::FETCH_ASSOC);
for ($i = 0; $i <= count($pays); $i++) {
    $color = 'black';
    if ($pays[$i]['price'] < $pays[($i - 1)]['price'])
        $color = "red";
    elseif ($pays[$i]['price'] > $pays[($i - 1)]['price'])
        $color = 'green';
    else
        $color = 'black';
    echo "<tr>
                        <td>
                            <span style='color: $color'>" . $pays[$i]['price'] . "</span>
                        </td>
                      </tr>";
}
?>

问题是$i = 0$i = 0$pays[($i-1)]['price']第一次给出的-1指数总是一个偏移误差。-

for($i=1; $i<count($pays); $i++) // see the change

你的循环

        for($i=0; $i<=count($pays); $i++)

$i=0开始。

那你试试这个:

          if($pays[$i]['price'] < $pays[($i-1)]['price'])

有一个$pays[($i-1)]。这就是你未知的索引-1 ($i-1 (or 0-1 for the first loop))