$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ランキング
-
foreachで上限回数指定方法また...
-
phpでforeachの中にforeachがあ...
-
スカラーのベクトル微分
-
ヒアドキュメントの中のfor文
-
プログラミングのPythonのnoteb...
-
ファイルの書き込みについて教...
-
2次元配列への標準入力
-
file_existsでファイル名の部分...
-
プルダウンメニューにDBの内容...
-
自動で番号を振りたい
-
while文について
-
配列をループでたくさん宣言し...
-
phpで、連想配列を普通の配列に...
-
一度に複数の値を取得できる乱...
-
smartyでページングするには
-
Smartyのテンプレートからjavas...
-
配列を回すとき、最後の要素だ...
-
多次元配列の一次元目の最大値...
-
php Undefined variableエラー
-
PHP: 未定義エラーの回避方法を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
smartyのforeachの使い方
-
マッチング処理(1:N)
-
foreachで上限回数指定方法また...
-
多次元配列を、1次元の配列にす...
-
foreachの間にテーブルの<TR>を...
-
PHP、{}記号の意味
-
VB.NET で 二次元のハッシュは...
-
$_POST受信で必要項目のみを結...
-
3つの連想配列を交互に代入し...
-
PHP:ツリー構造をulとli要素に...
-
foreachで配列を、左から縦3列...
-
PHPの構文で間違えが分からない
-
PHPで連想配列のプルダウンメニ...
-
添え字が全て文字列のPHPの多次...
-
テーブルデータ表示
-
Smartyでインクリメント
-
PHPで変数名にハイフンを使うに...
-
POSTで渡されるデータの数がわ...
-
Delphi XEの警告文を消したい
-
配列の要素の値をループ中に変...
おすすめ情報