面向对象的PHP - 对象数组迭代

面向对象的PHP - 对象数组迭代

问题描述:

我想遍历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. 正如乔所说,你的初始化数组添加元素之前,如

    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