2012-02-09 51 views
1

我想遍歷PHP中的對象數組,但我無法弄清楚。這是我的代碼:面向對象的PHP - 對象數組迭代

require_once("databaseConnect.php"); 
require_once("class/Ticket.php"); 

function showAll(){ 
    $sql = "SELECT * FROM Ticket WHERE Status='1'"; 
    $p = mysql_query($sql); 
    while ($row = mysql_fetch_object($p)){ 
     $t = new Ticket($row->IDTicket, $row->IDUser, $row->TotalOdd, $row->PlacedBet, $row->PossibleWin, $row->Status, $row->Won, $row->Time); 
     $nizTiketa[] = $t; 
    } 
    return $nizTiketa; 
} 

$niz = showAll(); 

for ($i; $i<count($niz); $i++){ 
    echo $niz[$i]->getIDTicket()."<br/>"; 
} 

,這是類票:

class Ticket { 
private $IDTicket; 
private $IDUser; 
private $TotalOdd; 
private $PlacedBet; 
private $PossibleWin; 
private $Status; 
private $Won; 
private $Time; 

function Ticket($idTicket, $idUser, $totalOdd, $placedBet, $possibleWin, $status, $won, $time) { 
    $this->IDTicket = $idTicket; 
    $this->IDUser = $idUser; 
    $this->TotalOdd = $totalOdd; 
    $this->PlacedBet = $placedBet; 
    $this->PossibleWin = $possibleWin; 
    $this->Status = $status; 
    $this->Won = $won; 
    $this->Time = $time; 
} 

function getIDTicket(){ 
    return $this->IDTicket; 
} 

function setIDTicket($idTicket){ 
    $this->IDTicket = $idTicket; 
} 

。 。 。

我一個非對象遇到錯誤調用一個成員函數getIDTicket()

應該怎樣做呢?

+3

只是爲了理智,在'$ nizTiketa =陣列添加();在''的功能SHOWALL(頂部)' - 添加一些進去之前總是初始化您的數組:) – Joe 2012-02-09 00:13:03

+0

你確定你必須在PHP中初始化數組? – user794596 2012-02-09 00:15:46

+1

事情是,如果沒有行匹配查詢,變量'$ nizTiketa'將不存在。這嚴格來說是一個你想通過初始化變量來避免的錯誤。 – deceze 2012-02-09 00:19:47

回答

1

夫婦的事情,我想在這裏做了理智......

  1. 正如喬所說,你的初始化數組添加元素之前,如

    function showAll() { 
        $nizTiketa = array(); 
        // ... 
    
  2. 無論您初始化迭代計數器$i爲零

    for ($i = 0, $count = count($niz); $i < $count; $i++) 
    

    或更簡單地使用foreach

    foreach ($niz as $ticket) { 
        echo $ticket->getIDTicket(), "<br/>"; 
    } 
    
+0

謝謝,我忘了把$ i = 0 – user794596 2012-02-09 00:33:00