面向对象的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()
应该怎样做呢?
答
夫妇的事情,我想在这里做了理智......
-
正如乔所说,你的初始化数组添加元素之前,如
function showAll() { $nizTiketa = array(); // ...
-
无论您初始化迭代计数器
$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
只是为了理智,在'$ nizTiketa =阵列添加();在''的功能SHOWALL(顶部)' - 添加一些进去之前总是初始化您的数组:) – Joe 2012-02-09 00:13:03
你确定你必须在PHP中初始化数组? – user794596 2012-02-09 00:15:46
事情是,如果没有行匹配查询,变量'$ nizTiketa'将不存在。这严格来说是一个你想通过初始化变量来避免的错误。 – deceze 2012-02-09 00:19:47