[PHP-users 19838]Re: リファレンスを入れた配列の先頭要素を取得

Toru Yamaguchi tyamaguchi @ contents.ne.jp
2004年 1月 12日 (月) 03:27:00 JST


山口と申します。

> 配列にセットされている先頭要素をリファレンスで取得する方法はないでしょうか。

配列で…となるとどうも出来そうに無いのですが、
せっかくオブジェクト指向で書いてらっしゃるなら、
次のようにしてみては如何でしょうか?

<?php
class A {
	var $_name;
    var $_next;

    function A($name){
        $this->_name = $name;
        $this->_next = NULL;
    }

    function setNext(&$next){
        $this->_next =& $next;
    }

	function getName() {
		return ($this->_name);
	}

    function setName($name){
        $this->_name = $name;
    }
}

class B {
	var $_pointer = 0;
	var $_array;

	function append(&$a) {
		$this->_array[] = &$a;
	}

	function &next() {
		return ($this->_array[$this->_pointer++]);
	}

	function reset() {
		$this->_pointer = 0;
	}
}
?>
<?php
$a1 = new A("one");
$a2 = new A("two");
$a3 = new A("three");
$a1->setNext($a2);
$a2->setNext($a3);

$b = new B();
$b->append($a1);
$b->append($a2);
$b->append($a3);

$data = &$b->next();
$data->setName("uhe");
echo $data->getName() . ":" . $a1->getName() . "<br>\n";
?>

かなり手抜きですが、恐らく石戸谷さんがやりたいことは、
こんな感じで実装できると思います。
まじめにやるならIteratorパターンとか参考にして見て下さい。



PHP-users メーリングリストの案内