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ランキング
-
foreachで上限回数指定方法また...
-
PHPで連想配列のプルダウンメニ...
-
C言語の配列をPush(追加)する...
-
スカラーのベクトル微分
-
多次元配列をソートする綺麗な...
-
mysqlと出力側PHPの文字コード...
-
プログラミングのPythonのnoteb...
-
PHPプログラミング スペースで...
-
読み(あ行~わ行)ごとに分け...
-
$_SESSIONに二次元配列を使える...
-
○番目から○番目までの取り出し...
-
配列の要素(value)に、変数を...
-
STLのvectorで作った配列をメン...
-
phpとmysqlで「あいまい検索」...
-
配列をmb_ereg_replaceで一気に...
-
PHPでの単語の出現回数表示
-
URLのサブドメインとドメイン部...
-
禁止ワード設定
-
改行入り変数を改行を残したま...
-
VBAでcsvファイルもシートもあ...
マンスリーランキングこのカテゴリの人気マンスリー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の警告文を消したい
-
配列の要素の値をループ中に変...
おすすめ情報