2015-07-19 92 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))