プロが教える店舗&オフィスのセキュリティ対策術

PHP初心者です。

foreachを使うときに、参考サイトのソースを見て???だったのですが、
例えば以下の場合に

foreach($_POST['hoge'] as $key => $val){
echo "$key : $val \n";
}

とありますが、hogeは自分で決めたものなので分かるのですが、
見に覚えの無い$key => $valといった変数で動作しています。

$keyや$valは自分で定義した覚えはありません。

調べると$keyは分かりませんが、$valはvalueの省略みたいな記述がありました。

また、他には更に短縮され、$kとか$vしか記述されていないソースもあり、
試すとこれでも正常に動いています。

これはどういうことなのでしょうか?
何か決まりがあるのでしょうか。
ちなみに、チェックボックスの配列取得の定義に使いました。

私からはただ勝手に短縮しているようにしか見えず納得いきません。
お詳しい方、どなたかアドバイス頂けないでしょうか。

宜しくお願いします。

A 回答 (3件)

似たような話で、



<?php
$array=array("a","b","c");
for($i=0;$i<count($array);$i++){
print $array[$i];
}
?>

など、自分で宣言しなくても$iをカウンターとして使う暗黙のルールがあります。
この場合$iは整数値を表すINTの頭文字に由来していたりするようです。
(昔はIからNまでは整数としてあつかうルールがあった)

今のプログラミング言語では変数名に原則何をつかってもかまいませんが
ループのときはi,i,k・・・を使うというのが定着してしまっているので
あえて崩すと違和感をおぼえます。

こういうのは、あまり深く考えず「そんなもんか」程度に理解しておくほうが幸せです
    • good
    • 0
この回答へのお礼

有難うございます。

>>$iをカウンターとして使う暗黙のルールがあります。

こういうことって、どの参考書にも載っていないのでうれしい情報です。
また、気になる部分でもありました。

お礼日時:2013/04/06 11:27

#PHP初心者というよりはプログラミング自体が初めてなんでしょうね



>$keyや$valは自分で定義した覚えはありません。

定義している必要はありません。foreachで処理する内容がセットされる(つまり受け取る)ための変数です。

http://www.php.net/manual/ja/control-structures. …
------- 引用ここから
最初の形式は、array_expressionで指定した配列に 関してループ処理を行います。各反復において現在の要素の値が $valueに代入され、内部配列ポインタが一つ前に 進められます。(よって、次の反復では次の要素を見ることになります。)

2番目の形式は、さらに各反復で現在の要素のキーを変数 $keyに代入します。
------- 引用ここまで

$keyとか$valueはあくまでも「仮に」書いているだけで、自分で好きな変数名を使えばいいです。その変数に値(あるいはキーの値)がセットされた状態でループ処理出来るというだけですから。
    • good
    • 0
この回答へのお礼

有難うございます。

>>#PHP初心者というよりはプログラミング自体が初めてなんでしょうね

はい、まさにその通りです。

>>foreachで処理する内容がセットされる(つまり受け取る)ための変数です。

なるほどです、1つのセットと覚えたほうが良いのでしょうか?
あまり変な部分に意識しないで進めたほうがよいのかもしれないですね・・・。

お礼日時:2013/04/06 11:29

$keyも$valも$kも$vも単なる変数名です。



連想配列のforeachの構文は,
foreach ( 式 as キー変数 => 値変数 ) 文
です。
php.netのドキュメントの書き方も悪いとは思いますが,
変数名が$keyや$valueに固定されているわけではりません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>>変数名が$keyや$valueに固定されているわけではりません。

なるほど、ただの一例という意味なのですね。
foreach ( 式 as キー変数 => 値変数 ) 文

分かりやすかったです。

お礼日時:2013/04/06 11:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!