简体   繁体   English

PHP中的OOP-对象数组迭代

[英]OOP in PHP - object array iteration

I am trying to iterate through array of objects in PHP, but I can't figure it out. 我正在尝试遍历PHP中的对象数组,但无法弄清楚。 This is my code: 这是我的代码:

    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/>";
}

and this is class Ticket: 这是班票:

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;
}

. . .

I got error Call to a member function getIDTicket() on a non-object 我在非对象上调用成员函数getIDTicket()时出错

How should it be done? 应该怎么做?

Couple of things I'd do here for sanity... 为了理智我会在这里做几件事...

  1. As mentioned by Joe, initialise your array before adding elements, eg 如Joe所述,在添加元素之前初始化数组,例如

     function showAll() { $nizTiketa = array(); // ... 
  2. Either initialise your iteration counter $i to zero 将迭代计数器$i初始化为零

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

    or more simply, use foreach 或更简单地说,使用foreach

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM