
$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で質問しましょう!
似たような質問が見つかりました
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- Chrome(クローム) Cookieを削除 他サイトでの自動ログインなどの設定も削除されますか パソコン クロームです 1 2022/09/10 21:47
- Yahoo!メール Yahooアカウントにログインできなくなって困っています。 2 2023/05/16 02:28
- Chrome(クローム) Yahoo! JAPANのショートカットのやり方 2 2023/05/06 13:24
- その他(ブラウザ) 最近、いろいろなブラウザでログインができません。 2 2022/03/29 00:04
- ポイントサービス・マイル YahooJapanカード、モバイルTカード、PayPayカードについて詳しい方教えて頂けますと幸い 2 2022/08/23 23:24
- Yahoo!メール Yahooアカウントにログインできないです。 1 2023/05/26 09:01
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
- Chrome(クローム) google earth PROをクリックすると下記の表示がされPROが開きません 2 2022/07/28 10:25
- PHP ワードプレスサイト PHP8.0.25でのWarningエラー 1 2023/06/12 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでテキストファイルを読み込...
-
配列からプルダウン用のHTMLを生成
-
配列から順位を算出したい
-
foreachで上限回数指定方法また...
-
POSTで渡されるデータの数がわ...
-
配列一致(要素順番は違うが内容...
-
配列をループでたくさん宣言し...
-
読み(あ行~わ行)ごとに分け...
-
$_SESSIONに二次元配列を使える...
-
プルダウンメニューにDBの内容...
-
配列の添え字が小数だとどうなる?
-
配列を回すとき、最後の要素だ...
-
自動で番号を振りたい
-
Resource id #3 と表示されま...
-
Smartyについて
-
cakephpでのトランザクション処...
-
2つの連想配列を比較して一致す...
-
sortableで並べ替えてDBに保...
-
C言語でCSVファイルの行数を読...
-
PHPの配列の中の要素の日付でソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マッチング処理(1:N)
-
Excel VBAでフィルター後の対象...
-
foreachで上限回数指定方法また...
-
3つの連想配列を交互に代入し...
-
Smartyでインクリメント
-
sqlのデーターを『あ行』『か行...
-
POSTで渡されるデータの数がわ...
-
foerachの中でキーを足したり、...
-
foreachで配列を、左から縦3列...
-
foreachの間にテーブルの<TR>を...
-
リストボックス複数選択抽出方法
-
textより$$にはさまれた文字列...
-
判定の仕方
-
プログラムの改良
-
forを使わずにforeach文のみで...
-
元号の表示
-
Mac トロイの木馬”Flashback"に...
-
pdfファイルの複数添付 引数の型
-
Delphi XEの警告文を消したい
-
Arduino 全部のピンをチェック...
おすすめ情報