0

使用 current() 方法后,execute() 方法总是返回一个“信息”对象,我总是得到一个数组。

我怎样才能获得一个对象(有对象)来像这样迭代,(没有 ORM):

foreach($obj as $o)
{
   echo $o->name;
   echo $o->email;
}

而不是使用当前,下一个等。

4

3 回答 3

0

我真的很喜欢独立的 Doctrine ArrayCollection 类:

代码:http ://trac.doctrine-project.org/browser/trunk/lib/Doctrine/Common/Collections/ArrayCollection.php?rev=7481

API: http: //www.doctrine-project.org/api/common/2.0/doctrine/common/collections/arraycollection.html

$objects = new Doctrine\Common\Collections\ArrayCollection();
$objects[] = new MyClass('name 1', 'email 1');
$objects[] = new MyClass('name 1', 'email 1');

foreach ($objects as $o)
{
    回声$o->名称;
    回声$o->电子邮件;
}
于 2010-07-29T22:47:04.950 回答
0

Execute()返回一个数组,并使用current()您将结果集作为数组数组,阅读 kohana V3 API,我发现了这个:

$users = DB::select()->from('users')->where('salesman', '=', TRUE)
         ->as_object()->execute();

foreach ($users as $user)
{
   echo $user->email;
}
于 2010-08-02T15:16:29.717 回答
0

PHP 5 提供了一种定义对象的方法,因此可以使用例如 foreach 语句来遍历项目列表。默认情况下,所有可见属性都将用于迭代。

来源:http ://www.php.net/manual/en/language.oop5.iterations.php

class MyClass
{
    public $var1 = 'value 1';
    public $var2 = 'value 2';
    public $var3 = 'value 3';

    protected $protected = 'protected var';
    private   $private   = 'private var';

    function iterateVisible() {
       echo "MyClass::iterateVisible:\n";
       foreach($this as $key => $value) {
           print "$key => $value\n";
       }
    }
}

$class = new MyClass();

foreach($class as $key => $value) {
    print "$key => $value\n";
}
echo "\n";


$class->iterateVisible();

结果:

var1 => value 1
var2 => value 2
var3 => value 3

MyClass::iterateVisible:
var1 => value 1
var2 => value 2
var3 => value 3
protected => protected var
private => private var
于 2010-07-29T19:17:08.250 回答