Javaでは可変要素数の集合はjava.util.Listインタフェースを実装したクラスを使うのが普通ですが、PHPで可変要素数の集合を扱うには何を使うのが良いでしょう。最初に思いつくのが連想配列なので、PHPの配列について調べてみましたが、みんな何かの値で初期化していて、空の配列を作ることについて言及している資料というのがなかなかありませんでした。
PHP5あたりからはオブジェクト指向プログラミングができるようになったので、リストクラスのようなものがあるのかとも思って調べてみましたが、すぐにはわかりませんでした。結局、ある資料をみたら、$list = array(); で良いと書いてあり、最後の要素を追加する手っ取り早い方法は、$list[] = $value; だということだったので、これを使いました。こうすると自動で添字がついて、for ($i=0; $i<$max ; $i++) { } で各要素に対して処理ができるようです。foreachを使ってもいいでしょう。
PHPの配列は連想配列なので、$list[$key] = $value; という使い方もできます。用途に応じて使いやすい方を選べばいいでしょう。
サンプル
<?php
$list = array();
$list[] = 'PHP';
$list[] = 'JavaScript';
$list[] = 'Java';
$list[] = 'Ruby';
var_dump($list);
$max = count($list);
for ($i=0 ; $i<$max ; $i++) {
echo "\$list[" . $i . "]: " . $list[$i] . "\n";
}
foreach ($list as $e) {
echo "\$e: " . $e . "\n";
}
$list1 = array();
$list1['PHP'] = 'PHP5';
$list1['JavaScript'] = 'JavaScript5';
$list1['Java'] = 'Java7';
$list1['Ruby'] = 'Ruby2';
var_dump($list1);
$keys = array_keys($list1);
foreach ($keys as $key) {
echo "\$list1['" . $key . "']: " . $list1[$key] . "\n";
}
foreach ($list1 as $e) {
echo "$e: " . $e . "\n";
}
実行結果
$ php -f php_array.php
array(4) {
[0] =>
string(3) "PHP"
[1] =>
string(10) "JavaScript"
[2] =>
string(4) "Java"
[3] =>
string(4) "Ruby"
}
$list[0]: PHP
$list[1]: JavaScript
$list[2]: Java
$list[3]: Ruby
$e: PHP
$e: JavaScript
$e: Java
$e: Ruby
array(4) {
'PHP' =>
string(4) "PHP5"
'JavaScript' =>
string(11) "JavaScript5"
'Java' =>
string(5) "Java7"
'Ruby' =>
string(5) "Ruby2"
}
$list1['PHP']: PHP5
$list1['JavaScript']: JavaScript5
$list1['Java']: Java7
$list1['Ruby']: Ruby2
PHP5: PHP5
JavaScript5: JavaScript5
Java7: Java7
Ruby2: Ruby2
PHPについては下記が参考になります。