2012-02-09 9 views
1

私はPHPでオブジェクトの配列を反復しようとしていますが、わかりません。これは私のコードです:OOP in 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

+0

をあなたはあります必ずPHPで配列を初期化する必要がありますか? – user794596

+1

クエリに一致する行がない場合、変数 '$ nizTiketa'は存在しません。これは厳密には、変数を初期化することで回避したいエラーです。 – deceze

答えて

1

ジョーで述べたように、私は...正気のためにここに

  1. にしてください物事のカップル、要素を追加する前に、あなたの配列を初期化、例えば

    function showAll() { 
        $nizTiketa = array(); 
        // ... 
    
  2. どちらかあなたの反復カウンタを初期化します$iを0にする

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

    以上を使用すると、foreach

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

ありがとう、私は$ i = 0を置くことを忘れた – user794596

関連する問題