如何访问无密钥数组的内容到对象转换?

时间:2013-04-24 06:08:17

标签: php arrays oop object

我正在尝试使用OOP和PHP。

我不知道为什么我需要做这样的事情,但我想知道如何做到这一点并且无法在网上找到它。

class Example{

public $a = 'aye';
public $b = 'bee';
public $c = 'see';

public function how(){
    return (object)array(
                         $this->a,
                         $this->b,
                         $this->c
                        );
    }    
}

$example = new Example;
$how = $example->how(); 
echo $how->1; //I thought would print bee

我知道提供数组键会让我这样做

echo $how->beekey //which would give me beekey's value

2 个答案:

答案 0 :(得分:2)

这基本上是不可能的,如bug report中所述;数字对象属性在PHP中是一种灰色区域。

但是,您可以将对象强制转换回数组并引用值:

$arr = (array)$how;
echo $arr[1];

或者,作为单行使用:

echo current(array_slice((array)$how, 1, 1));

我能给你的最好建议是不要把它变成一个对象:

public function how()
{
    return array(
        $this->a,
        $this->b,
        $this->c
    );
}    

然后将其引用为$how[1]

顺便说一下,PHP 4中的$how->{1} used to work:)

答案 1 :(得分:0)

如何使用循环?

foreach($how as $value)
{
    echo $value .'<br>'; //this print your values: aye<br>bee<br>see
}