我是PHP和Zend Framework的新手。我遇到了错误:
注意:未定义的索引:第58行的C:\ xampp \ htdocs \ blogshop \ application \ views \ scripts \ item \ tops.phtml中的itemid
我不明白为什么会出现这个错误。
public function topsAction() //tops action
{
//$tops = new Application_Model_DbTable_Item();
//$tops->getTops();
$item = new Application_Model_DbTable_Item(); //create new Item object
$this->view->item = $item->getTops(); //$this->view->item is pass to index.phtml
}
这是我的控制器代码。
public function getTops()
{
$row = $this->fetchAll('itemtype = "Tops"'); //find Row based on 'Tops'
if (!$row) { //if row can't be found
throw new Exception("Could not find Tops!"); //Catch exception where itemid is not found
}
return $row->toArray();
}
这是我在模型中的getTops操作,用于获取数据库中“Tops”类别的行。
<?php foreach($this->item as $item) : ?>
<?php echo $this->escape($this->item['itemid']);?> // This is where the error happens
<img src="<?php echo $this->escape($item->image);?>" width="82" height="100">
<?php echo $this->escape($this->item['itemname']);?>
<?php echo $this->escape($this->item['description']);?>
<?php echo $this->escape($this->item['itemtype']);?>
<?php endforeach; ?>
这是我的代码,用于显示我在数据库中的所有行。
答案 0 :(得分:2)
itemid
数组中没有名为$this->item
的索引,这就是您收到错误的原因。
此外,您的代码似乎有点不对劲:
<?php foreach($this->item as $item) : ?>
<?php echo $this->escape($this->item['itemid']);?>
<img src="<?php echo $this->escape($item->image);?>" width="82" height="100">
<?php echo $this->escape($this->item['itemname']);?>
<?php echo $this->escape($this->item['description']);?>
<?php echo $this->escape($this->item['itemtype']);?>
<?php endforeach; ?>
$this->item
语句中的每个foreach
都应替换为$item
,以便迭代生效。因此它将是$item['itemid']
,$item['itemname']
等。您缺少更深入的数组,使迭代foreach
无用。
我猜$this->item
看起来像这样:
array (
1 =>
array (
'itemid' => 1,
'itemname' => 'foobar',
),
2 =>
array (
'itemid' => 2,
'itemname' => 'bazqux',
),
)
这就是$this->item['itemid']
没有返回任何内容的原因,因为它不存在。 $this->item[1]['itemid']
然而确实。 foreach
周期帮助您做的是它遍历(迭代)整个$this->item
数组,其中每个值在循环内表示为$item
。在第一次运行中,$item
为$this->item[1]
,在第二次运行中,$item
为$this->item[2]
,依此类推,等等。
因此,在$this->item
构造内将$item
更改为foreach
。