[PHP-users 11719] Re: 2次元配列の要素数の取得方法は?

Osamu Shigematsu php-users@php.gr.jp
Fri, 22 Nov 2002 17:37:01 +0900


重松です。こんにちは。

>  なるほど、次元というモノではないのですね。
> とりあえず、クラス側で、それぞれの要素数を変数で
> 渡してもらうような作りで解決してみます。

なぜそういうなるのかわかりませんが、

	// 2 次元配列「風」ハッシュ作成
	$a = array();
	for($x = 0; $x < 5; ++$x){
		for($y = 0; $y < 10; ++$y){
			$a[$x][$y] = "($x,$y)";
		}
	}

	$xx = count($a);
	$yy = 0;
	foreach($a as $v){
		if($yy < count($v) $yy = count($v)
	}

	print "x = $xx, y = $yy";

こう書けば納得していただけますでしょうか?

つまり、配列の添え字はディレクトリの名前で、
中身はディレクトリの中身と同じで、
その中に複数のディレクトリや、中身が入っている。

ディレクトリは、0 (ゼロ) という名前からつけなければいけない、
という決まりはないし、数字でなくていいですよね?
また、中身も、ファイルだけでなくて、ディレクトリを入れられるし、
中身の個数も一定でない、ということです。

ただし、あなたが自分自身で、そういう決まり、をつけることはできますから、
2 次元の配列(のように)取り扱うことは当然可能です。

ただし、世間一般的な概念でいうところの配列ではないので、
当然要素を削除しても、数値ばかりでつけておいたとしても、
添え字が自動的に詰まったりはしません。

	$a = preg_spllit('//','PHP!');
	print_r($a);
	unset($a[0]);
	print_r($a);

結果:
Array
(
    [0] => 
    [1] => P
    [2] => H
    [3] => P
    [4] => !
    [5] => 
)
Array
(
    [1] => P
    [2] => H
    [3] => P
    [4] => !
    [5] => 
)


-- 
Osamu Shigematsu <m5issige@mr.hitachi-medical.co.jp>