PHPとRubyのハッシュの違い
PHPで連想配列という言葉はRubyで言うハッシュらしい。
最近はPHPでもハッシュって言ってる人もいるとかいないとか。
ちなみにハッシュってのは通常の配列とは違って、文字列をキーにできる。
て言ってもよくわからんかもしれないので、作ってみせた方が早いかも^^;
ということでキーが国名前で中身が首都のハッシュ。
■PHP
$countries["Japan"]="Tokyo";
$countries["UnitedStates"]="Washington";
$countries["Britain"]="London";
$countries["France"]="Paris";
これをforeachとかでまわすとハッシュを作った順番通り取得できる。
foreach($countries as $key=>$country){
print $key ." " . $country."<br />";
}
表示結果:
Japan Tokyo
UnitedStates Washington
Britain London
France Paris
■Ruby
countries["Japan"]="Tokyo"
countries["UnitedStates"]="Washington"
countries["Britain"]="London"
countries["France"]="Paris"
これをeachメソッドでまわすと・・・
countries.each do |key, country|
p key + " " + country
end
表示結果:
"Britain London"
"France Paris"
"Japan Tokyo"
"UnitedStates Washington"
とおわかりの通り、入れた順番じゃない!!><
RubyはHashの作った順番って考えはないみたいなんですな・・・・。
何かキーの文字コード順になってる気がする・・・。
確かにハッシュは名前の順番ってのもわからなくもないんだけどなぁ・・・。
でもなぁ・・・・。
これはPHPとRubyで違うので気をつけましょう。