素朴な質問ですが、phpで配列のキーに日本語は使えるのでしょうか?

つまり、

$arr = array("日本語のキー" => "格納文字列");

ということを行っても問題はないか、ということです。

ちょっと試したところ問題はなかったのですが、php.netの配列のマニュアルには整数または文字列としか書かれていなくて、確認できるソースがほかに見つからなかったので。
また日本語が使える場合、注意しなければいけないことがありましたら教えてください。

なお、回答には正確さを求めているので、「多分問題ない」など不確実なものはNGとさせて頂きます。

回答の条件
  • 1人2回まで
  • 登録:2007/03/06 19:12:48
  • 終了:2007/03/08 20:45:46

回答(3件)

id:tezcello No.1

tezcello回答回数460ベストアンサー獲得回数692007/03/06 22:04:18

ポイント27pt

PHPのマニュアルに

変数名は、PHPの他のラベルと同じルールに従います。 有効な変数名は文字またはアンダースコアから始まり、任意の数の文字、 数字、アンダースコアが続きます。

...

文字とはa-z、A-Z、127から255まで (0x7f-0xff)のアスキー文字を意味します

とあるので、変数名(=ラベル)と認められる範囲の文字は日本語だろうが何だろうが使えるのでは?

Shift-JIS は第2バイトに使えない文字

 @ [ \ ] ^ 

を含まない範囲で使用するか、元々その類いを含まないUTF-8, EUC を使うなどの配慮は必要でしょう。

id:xxmasaxx

なるほど、変数名からは思いつきませんでした。

参考になりました、有り難うございます。

2007/03/08 20:44:12
id:ito-yu No.2

ito-yu回答回数323ベストアンサー獲得回数142007/03/07 14:11:57

ポイント27pt

http://www.php.net/manual/ja/language.types.array.php

配列の添字として定数を使用可能であることがわかります。

よって、定数として定義可能な値はすべて配列の添字として利用可能であると導けます。マルチバイト文字も例外ではありません。

http://www.php.net/manual/ja/function.define.php

id:tezcelloさんの書かれているSJISに関する問題は根深いですが、そもそもSJISでのコーディングは推奨されておりません。

EUC-JPかUTF-8でコーディングしましょう。

id:xxmasaxx

回答有り難うございます。

SJIS以外ですね、なるほど。

2007/03/08 20:45:07
id:mercury2005 No.3

mercury2005回答回数1ベストアンサー獲得回数02007/03/07 16:24:01

ポイント26pt

1. 配列のキーに日本語でも構いません。

2. キーに変数や計算式等も使用可能です。

$title_name = "名前";

$array = array("{$title_name}" => "山田太郎");


注意:

日本語(マルチバイト)でスクリプトを書く場合は:

SHIFT_JISは避けたほうがいいと思います。文字コードをEUC-JP か UTF-8 にしたほうが無難です。

id:xxmasaxx

回答有り難うございました。

参考になります。

2007/03/08 20:45:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません