お勉強 :  大きな勘違い 

PHPで入力データによって意図したように動くときと動かない
ときがあり、その解決に結構時間がかかってしまったという
お話です。

PHPでは配列がいわゆる配列ではなくて「順序つきマップ」
だと公式ドキュメントに書いてあるのですけど、その意味を
はっきりと体感するようになりました。

これまでは、

$a[2]="b";
$a[1]="a";
$a[3]="c";

こういう配列を foreach($a as $key => $value) で
ループさせると、

1回目・・・$key = 1 $value="a"
2回目・・・$key = 2 $value="b"
3回目・・・$key = 3 $value="c"

と出てくるとず~~~っとおもいこんでいたのですが、
PHPの配列(っぽいもの)のキーはキーとしての意味しかなく、
順序をあらわすものではないといことでした。
実際には、代入した順序で扱われてこう出る。

1回目・・・$key = 2 $value="b"
2回目・・・$key = 1 $value="a"
3回目・・・$key = 3 $value="c"

配列っぽいものを配列順に使用したい、という場合は
一旦 ksort してから foreach にするか、あるいは
for ループで添え字を指定すればよいのだった。

ハマる人も多いらしく、ネット上にこの部分を記載している
先人たちも多かったけど、そもそも配列でそんなことになって
いるとは思わなかったので気付くのに時間がかかってしまった。

さて、今晩の体重は 79.6kg でした。


[ 2017/06/20 22:57 ] お勉強 | TB(0) | CM(0)
コメントの投稿








管理者にだけ表示を許可する