php配列のワナ
2004ねん3がつ12にち
くらにょん、今のお仕事はPHPで開発のお仕事しています。
その前はPerlでした。それ以外の言語ってよく知らないのですが、PHPの配列にはちょっと違和感が…。
と、言うか、PHPには純粋な配列は存在していないように思います。配列のように見えるのはハッシュではないのかと思うのです。

Perlでの例
配列に次のように、10番目と3番目の要素に値を代入します。
#! /usr/bin/perl
print "content-type: text/html\n\n";

$a[10] = "10";
$a[3] = "3";

foreach( @a ) { print "-&gt;".$_."<br>\n";}
print "===========<br>\n";

print "join=(".join( ", ", @a ).")<br>\n";
これを実行すれば、結果は
->
->
->
->3
->
->
->
->
->
->
->10
===========
join=(, , , 3, , , , , , , 10)
自動的に配列要素が生成され、3番目(配列は0番目から数えるので「3番目」になります。)と、10番目に普通に値が入ります。
くらにょん的にはこれが普通に思えますが、PHPで同様にスクリプトを書いてみます。
<?php
$a = array();

$a[10] = "10";
$a[3] = "3";

foreach( $a as $value) { print "-&gt;{$value}<br>\n";}
print "===========<br>\n";

print "implode=(".implode( ", ", $a ).")<br>\n";
?>
すると、結果は
->10
->3
===========
implode=(10, 3)

(RedHat7.2+php4.0.6, Win2k+php4.2.1 で確認)
完全にハッシュとしての動きですね(10が先であることにも注目)。
これを知らずに、しばらく嵌っておりました。
結局、最初に配列を生成することで切り抜けました。
これって、普通なのかなぁ?PHPがちょっと特殊な気がするのですけど。
それとも、純粋な配列を生成する方法があるのでしょうかねぇ。。。(謎)
( Top▲ )
日記の入り口はコチラです♪