[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>