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

Osamu Shigematsu shige @ ravi.ne.jp
2004年 1月 13日 (火) 08:58:48 JST


重松です。こんにちは。

> $a1 = new A("one");
> $a2 = new A("two");
> $a3 = new A("three");

ここ、new が返したオブジェクトもちゃんと参照で代入しないと、
コピーされます。

	$a1 = & new A("one");

という感じです。
# まあ、大したコストではないんでしょうが。

それから、コードの一部がはしょられているのかもしれませんが、
$array が初期化されていませんね。
個人的には、意味が明確な、array() 関数を使って、
配列であることを明示することをお勧めしたい気持ちです。

	$array = array(); // 空の配列

で、参照で要素をぐるぐる回るには:

	for (reset($array); $pair = & each($array); ) {
		$val = & $pair[1];
	}

という感じで OK と思います。(多分)

確かに私も、PHP のコンテナは貧弱と思っていますし、
他の言語から移行した場合 std::vector, std::list に相当するものがないのは
結構きついものがある気がします。
ただし、現状、ないものはないのだから、致し方ないので、
結局はクラスで実装するか、あるいは、(連想) 配列に
無理やりそれらのコンテナのふりをさせる、
そして、アルゴリズム自体を連想配列にあわせる、
という選択になるかと思います。

-- 
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/



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