
PHP初心者です。
foreachを使うときに、参考サイトのソースを見て???だったのですが、
例えば以下の場合に
foreach($_POST['hoge'] as $key => $val){
echo "$key : $val \n";
}
とありますが、hogeは自分で決めたものなので分かるのですが、
見に覚えの無い$key => $valといった変数で動作しています。
$keyや$valは自分で定義した覚えはありません。
調べると$keyは分かりませんが、$valはvalueの省略みたいな記述がありました。
また、他には更に短縮され、$kとか$vしか記述されていないソースもあり、
試すとこれでも正常に動いています。
これはどういうことなのでしょうか?
何か決まりがあるのでしょうか。
ちなみに、チェックボックスの配列取得の定義に使いました。
私からはただ勝手に短縮しているようにしか見えず納得いきません。
お詳しい方、どなたかアドバイス頂けないでしょうか。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
似たような話で、
<?php
$array=array("a","b","c");
for($i=0;$i<count($array);$i++){
print $array[$i];
}
?>
など、自分で宣言しなくても$iをカウンターとして使う暗黙のルールがあります。
この場合$iは整数値を表すINTの頭文字に由来していたりするようです。
(昔はIからNまでは整数としてあつかうルールがあった)
今のプログラミング言語では変数名に原則何をつかってもかまいませんが
ループのときはi,i,k・・・を使うというのが定着してしまっているので
あえて崩すと違和感をおぼえます。
こういうのは、あまり深く考えず「そんなもんか」程度に理解しておくほうが幸せです
有難うございます。
>>$iをカウンターとして使う暗黙のルールがあります。
こういうことって、どの参考書にも載っていないのでうれしい情報です。
また、気になる部分でもありました。
No.3
- 回答日時:
#PHP初心者というよりはプログラミング自体が初めてなんでしょうね
>$keyや$valは自分で定義した覚えはありません。
定義している必要はありません。foreachで処理する内容がセットされる(つまり受け取る)ための変数です。
http://www.php.net/manual/ja/control-structures. …
------- 引用ここから
最初の形式は、array_expressionで指定した配列に 関してループ処理を行います。各反復において現在の要素の値が $valueに代入され、内部配列ポインタが一つ前に 進められます。(よって、次の反復では次の要素を見ることになります。)
2番目の形式は、さらに各反復で現在の要素のキーを変数 $keyに代入します。
------- 引用ここまで
$keyとか$valueはあくまでも「仮に」書いているだけで、自分で好きな変数名を使えばいいです。その変数に値(あるいはキーの値)がセットされた状態でループ処理出来るというだけですから。
有難うございます。
>>#PHP初心者というよりはプログラミング自体が初めてなんでしょうね
はい、まさにその通りです。
>>foreachで処理する内容がセットされる(つまり受け取る)ための変数です。
なるほどです、1つのセットと覚えたほうが良いのでしょうか?
あまり変な部分に意識しないで進めたほうがよいのかもしれないですね・・・。
No.1
- 回答日時:
$keyも$valも$kも$vも単なる変数名です。
連想配列のforeachの構文は,
foreach ( 式 as キー変数 => 値変数 ) 文
です。
php.netのドキュメントの書き方も悪いとは思いますが,
変数名が$keyや$valueに固定されているわけではりません。
ありがとうございます。
>>変数名が$keyや$valueに固定されているわけではりません。
なるほど、ただの一例という意味なのですね。
foreach ( 式 as キー変数 => 値変数 ) 文
分かりやすかったです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) Worksheets メソッドは失敗しました。のエラー処理のやり方 4 2022/05/29 21:29
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
先頭0で重複のない配列を作りたい
-
PHPの配列の出力について
-
変数に格納された文字列でdefin...
-
規則性があるテキストをグルー...
-
phpでforeachの中にforeachがあ...
-
不要な配列を消したい
-
pythonで辞書データへのアクセ...
-
配列の順番により別の配列を並...
-
関数をの引数について。
-
配列から順位を算出したい
-
2つの配列/キーが一致する際、...
-
phpで$a,$b,を%指定して表示さ...
-
正規表現についての質問
-
データベースに削除機能を追加...
-
配列を利用して表示されるテー...
-
PHP ファイル読み取りについて。
-
助けてください!九星気学のP...
-
すべての変数の値をリセットする
-
2次元配列を1次元配列にするには
-
C言語の配列とポインタについて
マンスリーランキングこのカテゴリの人気マンスリー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 全部のピンをチェック...
おすすめ情報