2015-07-19 94 views
0

我使用PDO来连接mysql数据库,并与PDO :: FETCH_ASSOC功能..获取ASSOC阵列..未定义抵消:-1 PDO在for循环

但是,当运行代码的多行给这个错误。

未定义抵消:-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>"; 
} 

?> 
+0

由于'for i循环中的$ i = 0',您得到了该错误。开始'$ i = 1'。 –

回答

1

问题是$i = 0。第一次$i = 0母鸡$pays[($i-1)]['price']给出-1索引,它总是偏移错误。请执行以下操作: -

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

不客气'@ Saman'.Cheers。 –

1

你循环

 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))