PHPの配列の問題

PHPの配列はややこしいとよく言われ、初心者がPHPでつまづきそうなポイントの1つです。

今回は、PHP技術者認定試験に出る(らしい)配列の問題で、面白いものがあったのでご紹介します。

ちなみにですが、PHP技術者認定試験を知らない方はこちらの記事が参考になるかと思います。

https://wayswebhack.com/about-phpexam/

表示される結果は?

PHP5技術者認定初級試験を受けてきました PHP Advent Calendar jp 2011 - anybody’s game

この記事で紹介されている問題で、自分も実際につまづきました。

次のプログラムを実行して得られる出力はどれか。
<?php
$hoge = array();
$hoge[3] = 'a';
$hoge[2] = 'b';
$hoge[0] = 'c';
$hoge[1] = 'd';
foreach ($hoge as $val) {
    echo $val;
}
  1. abcd
  2. bcba
  3. dbac
  4. cdab

多分2番はbcdaかdcabの間違いだと思います。まぁ、これ言ったら2番が絶対正解じゃないって分かっちゃうんですけどね・・・。

(正解は次のページにて)

わかりましたか?

正解は1番なのですが、見事に間違えました。キーに惑わされましたね・・・。

一応解説しておくと、PHPの配列はキーと要素があり、例題で言うと$hoge[3] = ‘a’; の3がキー、aが要素です。

で、キーは配列の順番とは関係なくて、配列は要素が追加された順番と同じになります。

ですから、要素を見ると今回はa,b,c,dの順番で追加されていっているので、1番が正解となるわけですね。

ちなみに、foreachは一時変数(今回は$val)に配列の要素が順番に代入されて、繰り返し処理が行われています。

つまづきそうなところが明確になる

こういった問題はPHPに慣れた人からすると余裕かもしれませんが、初心者にはちょっとややこしい部分だと思います。

PHP技術者認定試験には、単純に知識を問う問題もありますが、こういった知らないままだと困りそうな問題もあっていいですね。