foreach和$this的PHP使用

foreach和$this的PHP使用,php,Php,这是我的index.php代码。我知道我不能在课外使用foreach。我不知道该用什么来代替,可能还缺少其他东西。我得到了错误 不在对象上下文中使用$this 我有一个SQL表格库,它有6个属性:名称,拇指,显示,原始,标题和说明 我想列出所有行,如果在PHP5中不能在类外使用foreach,我该怎么做 <?php while (($row = mysql_fetch_object($res)) !== false) { $data['name'] = $row->name;

这是我的
index.php
代码。我知道我不能在课外使用
foreach
。我不知道该用什么来代替,可能还缺少其他东西。我得到了错误

不在对象上下文中使用$this

我有一个SQL表格库,它有6个属性:
名称
拇指
显示
原始
标题
说明

我想列出所有行,如果在PHP5中不能在类外使用
foreach
,我该怎么做

<?php
while (($row = mysql_fetch_object($res)) !== false) {
    $data['name'] = $row->name;
    $data['thumb'] = $row->thumb;
    $data['display'] = $row->display;
    $data['original']= $row->original;
    $data['title']= $row->title;
    $data['description']= $row->description;
foreach ($this->data as $row){
    print "{$row['name']} some HTML {$row['thumb']} some HTML {$row['display']} {$row['original']} some HTML {$row['title']} some HTML {$row['description']} ";
}
?>
我得到的是 好像我有6条空记录(注意,我有6个属性,所以将属性作为行?

消除了一些混淆 可以在类外部使用
foreach
,但不能在类自身外部将类称为
$this
。委员会:

当 该方法是从对象上下文中调用的$这是一个 对调用对象的引用(通常是 方法属于,但如果调用该方法,则可能属于另一个对象 静态地从次对象的上下文中删除)

代码应使用包含实例的变量引用类:

$object = new DataAccess();
foreach($object->data as $row) {
在这种情况下可能的解决方案 您可以直接在字符串中引用MySQL结果对象,而无需首先将其分配给数组中的值—请参阅下面的代码。如果您确实需要数组,那么应该使用
mysql\u fetch\u assoc()
而不是
mysql\u fetch\u object()


此变量
$This
仅在使用非静态方法时可用。否则,您必须使用正常变量
$此
始终指当前对象

见此:

当从对象上下文中调用方法时,伪变量$this可用$这是对调用对象的引用(通常是该方法所属的对象,但如果该方法是从辅助对象的上下文静态调用的,则可能是另一个对象)


您有两种解决方案:如果您的代码在类中,而不是

$data['eee']=…

$this->data['eee']=…

如果你在班外(但也在班内工作),请更换

foreach($this->data as$row){


foreach($data作为$row){

你可以把foreach放在类中方法,我猜在PHP中如何从MySQL数据库检索数据的网页上有上百万个教程,从这里开始:@GeorgesKmeid我注意到你已经更新了你的问题。见下文。你不需要对行进行
foreach
,因为你已经用
。如果你尝试我答案中的解决方案,你就会明白我的意思。
$object = new DataAccess();
foreach($object->data as $row) {
while (($row = mysql_fetch_object($res)) !== false) {
    print "{$row->name} some HTML {$row->thumb} some HTML {$row->display} {$row->original} some HTML {$row->title} some HTML {$row->description}";
}