
$yahoo-Japan="100";というような、ハイフンが含まれた変数名を使う必要があるのですが、そのままですと当然エラーになるため、いい書き方は、ないですか?
とりあえず、${"yahoo-Japan"}="100";とダブルコーテーションと中カッコで囲ってみたところ、動いているようですが、ググッてみてもこのような書き方がヒットせず、この書き方が正しいのか自信がもてません。
解説しているサイトがあれば教えてください。
コードは以下のような感じです。cookieの値は私の管理外になる為、ハイフンを抜くことはできません。
$cookie = $_COOKIE["genre"];
$code_genre = array("yahoo-japan", "google-japan");
${"category_yahoo-japan"} = "100";
${"category_google-japan"} = "200";
if (in_array($cookie,$code_genre)) {
$category = "${'category_'.$cookie}";
}
No.3ベストアンサー
- 回答日時:
ANo.2です
一番多用するパターンを書き忘れてた(汗
$cookie = $_COOKIE["genre"];
$code_genre = array(
array("yahoo-japan" => "100"),
array("google-japan" => "200")
);
foreach ($code_genre as $key=>$val) {
if (in_array($key, $cookie)) {
$category = $val;
}
}
この書き方が一番素直だと思いますけどね。
教えていただいたコードを参考に以下のようにすることで期待通りの結果を得ることができました。
ありがとうございました。
$cookie = $_COOKIE["genre"];
$code_genre = array(
"yahoo-japan" => "100",
"google-japan" => "200"
);
foreach ($code_genre as $key => $val) {
if ($cookie == $key) {
$category= $val;
}
}
No.2
- 回答日時:
わざわざ変数名に使わなくても、普通はこういう処理にしませんかねぇ・・・
$cookie = $_COOKIE["genre"];
$code_genre = array("yahoo-japan", "google-japan");
$code_value = array("100", "200"); // $code_genreと同じ並びで定義する
foreach ($code_genre as $key=>$val) {
if (in_array($val, $cookie)) {
$category = $code_value[$key];
}
}
もっと多く使うパターンはこうでしょうか
$cookie = $_COOKIE["genre"];
$code_genre = array( // keyとvalで各々定義する
array('key=>"yahoo-japan", 'val'=>"100"),
array('key'=>"google-japan", 'val'=>"200")
);
foreach ($code_genre as $arr) {
if (in_array($arr['key'], $cookie)) {
$category = $arr['val'];
}
}
No.1
- 回答日時:
${~~} というのは「可変変数」と言います。
変数名を式で指定する方法。$a = 123; と、${"a"} = 123; は同じです。
ただ、- は変数名に使えないことになっているので、${"yahoo-Japan"} が使えるのは たまたま な気がします。
>ハイフンが含まれた変数名を使う必要があるのですが、
これは方針が間違っています。cookie名をハッシュのキーにすれば済むだけでしょう。
この回答への補足
cookie名をハッシュのキーにするというのがよく分からないのですが、
具体的にはコードを教えていただけたらお願いします。
私の中では、$cookie=str_replace("-","",$cookie);のような処理を追加する方向で考えていたのですが、これとは根本的に違うやり方ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
プルダウンメニューにDBの内容...
-
C言語でCSVファイルの行数を読...
-
delphi 2次元配列がわかりません
-
行列
-
文字の先頭行を削除
-
smartyで配列の中の同数値の数...
-
file_existsでファイル名の部分...
-
PHPにてクラスを配列にすること...
-
配列の添え字が小数だとどうなる?
-
自動で番号を振りたい
-
【PHP】チェックボックスの必須...
-
C言語 最大値と最小値を求めて...
-
$_SESSIONに二次元配列を使える...
-
楽天市場ジャンル検索APIで順番...
-
String だと「 ByRef引数の型が...
-
class内部でarray_mapをつかう...
-
PHPで多次元配列を一度に処理す...
-
ネストが深い時のforeachはどう...
-
mallocで char *型の配列を確...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLから受け取ったデータを連...
-
変数に格納された文字列でdefin...
-
先頭0で重複のない配列を作りたい
-
array関数につきまして
-
oreachで変数を用意せずにカウ...
-
関数をの引数について。
-
PHPの配列の出力について
-
配列からプルダウン用のHTMLを生成
-
規則性があるテキストをグルー...
-
forを使わずにforeach文のみで...
-
連想配列からの値の取り出し
-
POSTで渡されるデータの数がわ...
-
PHPでテキストファイルを読み込...
-
PHPで、'=>'の意味が分かりませ...
-
phpでforeachの中にforeachがあ...
-
php 2つの配列の内、片方を元に...
-
foreachで上限回数指定方法また...
-
POSTを配列として送信し、キー...
-
多次元配列の扱い方
-
PHPの構文で間違えが分からない
おすすめ情報