- ベストアンサー
foreachとかの勝手な省略?
- PHP初心者です。foreachを使うときに、参考サイトのソースを見て???だったのですが、hogeは自分で決めたものなので分かるのですが、$key => $valといった変数で動作しています。
- $keyや$valは自分で定義した覚えはありません。調べると$keyは分かりませんが、$valはvalueの省略みたいな記述がありました。また、他には更に短縮され、$kとか$vしか記述されていないソースもあり、試すとこれでも正常に動いています。
- これはどういうことなのでしょうか?何か決まりがあるのでしょうか。ちなみに、チェックボックスの配列取得の定義に使いました。私からはただ勝手に短縮しているようにしか見えず納得いきません。お詳しい方、どなたかアドバイス頂けないでしょうか。
- みんなの回答 (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・・・を使うというのが定着してしまっているので あえて崩すと違和感をおぼえます。 こういうのは、あまり深く考えず「そんなもんか」程度に理解しておくほうが幸せです
その他の回答 (2)
- agunuz
- ベストアンサー率65% (288/438)
#PHP初心者というよりはプログラミング自体が初めてなんでしょうね >$keyや$valは自分で定義した覚えはありません。 定義している必要はありません。foreachで処理する内容がセットされる(つまり受け取る)ための変数です。 http://www.php.net/manual/ja/control-structures.foreach.php ------- 引用ここから 最初の形式は、array_expressionで指定した配列に 関してループ処理を行います。各反復において現在の要素の値が $valueに代入され、内部配列ポインタが一つ前に 進められます。(よって、次の反復では次の要素を見ることになります。) 2番目の形式は、さらに各反復で現在の要素のキーを変数 $keyに代入します。 ------- 引用ここまで $keyとか$valueはあくまでも「仮に」書いているだけで、自分で好きな変数名を使えばいいです。その変数に値(あるいはキーの値)がセットされた状態でループ処理出来るというだけですから。
お礼
有難うございます。 >>#PHP初心者というよりはプログラミング自体が初めてなんでしょうね はい、まさにその通りです。 >>foreachで処理する内容がセットされる(つまり受け取る)ための変数です。 なるほどです、1つのセットと覚えたほうが良いのでしょうか? あまり変な部分に意識しないで進めたほうがよいのかもしれないですね・・・。
- Yune-Kichi
- ベストアンサー率74% (465/626)
$keyも$valも$kも$vも単なる変数名です。 連想配列のforeachの構文は, foreach ( 式 as キー変数 => 値変数 ) 文 です。 php.netのドキュメントの書き方も悪いとは思いますが, 変数名が$keyや$valueに固定されているわけではりません。
お礼
ありがとうございます。 >>変数名が$keyや$valueに固定されているわけではりません。 なるほど、ただの一例という意味なのですね。 foreach ( 式 as キー変数 => 値変数 ) 文 分かりやすかったです。
お礼
有難うございます。 >>$iをカウンターとして使う暗黙のルールがあります。 こういうことって、どの参考書にも載っていないのでうれしい情報です。 また、気になる部分でもありました。