配列で提供される情報は値の種類とサイズが異なり、要素の数を事前に決定できるとは限りません。最新のプログラミング、特に分散バージョンでは、複雑なデータ構造を作成できます。そのコンテンツとプロパティは、さまざまなアクションまたはイベントのさまざまなシーケンスの結果として、無期限に動的に決定できます。
開発段階では、運用プロセスを予測し、情報の表示と使用、それらの外観と使用のダイナミクスに関するすべての可能なオプションを提供することが常に可能であるとは限りません。
foreach構文を定式化して、PHPは2つを提案しました要素にアクセスするためのオプション。どちらもキータイプまたは値タイプに依存せず、通常のループでエミュレートできます。配列を要素のセットと見なすことが提案されていますが、その数は最初は決定されていません。アレイは、キーの有無にかかわらず、オンザフライで形成できます。要素は配列内で削除でき、キーは関連付けられ、デフォルトで形成されます。
foreach($ aArrayName as $ xValue){ループ本体}
このような構造では、PHPのforeachループが必要になります行のすべての要素を通過します。ループの本体では、$ xValue変数は、$ aArrayName配列のすべての値を追加された順序で順番に取得します。アイテムのキー値は使用できません。
foreach($ aArrayName as $ xKey => $ xValue){ループ本体}
ここでも、foreachコンストラクトPHPを実行します配列の内容全体をスキャンしますが、ループの本体では、$ xValue変数と$ xKey変数(要素キー)の両方が、対応する値をペアで受け取ります。
foreach PHPの内部では、要素が追加された順序ですが、配列の形成中に追加/削除が繰り返され、キーがあるものとないものが追加された場合は、要素のシーケンスの位置からではなく、に基づいて配列を操作するのが最善です。それらのコンテンツまたはキー。
さまざまな客観的な理由でアレイ内のシーケンスは従わないか、それほど重要ではないかもしれませんが、とにかくガイドされるべきではありません。単純なタスクでは、些細なデータセットでは問題はなく、アルゴリズムは順次処理用に構成できますが、多くの要因が配列の作成/編集のプロセスに影響を与える場合は、コンテンツに焦点を当てる必要があります。
独自の概念の観点から、同様の言語を考慮せずに、PHP foreach配列は、実際の特定のタスクを考慮して、独立して設計する必要があります。
与えられたものがあり、与えられたものが特定の基準に従って類似したものの一般的なコレクションにインデックスを持っている場合の練習、- それは昨日でした.
インデックスがキーになり、配列は次の形式になりました連想配列。つまり、キーはシーケンシャルな一意性を失い(通常はシーケンシャル:0、1、2、... n)、値にもなりましたが、実際の値(つまり、要素のコンテンツ)に関連付けられた単純な値(つまり、キー)になりました。 これは今日です、これは正しいですが、完璧ではありません.
これが、PHPがforeachループを通常の配列に向けられた通常のループの代替と見なす理由です。これはまず第一に、これは非常に重要なことです。 配列要素の真の正しさだけでなく、彼らの鍵!
最初に要素があり、次に2つの要素がありました...これは、要素の配列がどのように表示され、それらの配列をループするかです。
for($ i = 0; $ i <count($ aArrayName); $ i ++){
各$ aArrayName [$ i]の処理本体
}
次に、顔のない0、1、2、... nの代わりに、要素に独自の名前(キー、配列が関連付けられ、foreachループが必要)がありました-「各ループ」:
foreach($ aArrayName as $ xKey => $ xValue){
同じ$ aArrayName [$ xKey]または$ xValueの各処理本体
}
今、正しい要素が配列に来るべき時が来ました、つまり、それ自体にあるもの。彼ら自身がインデックス、コンテンツ、シーケンス内の位置を知っています。シーケンスの独自の選択を明示し、これらすべての機能をそれらを含む実際のアレイに委任する傾向があります。
そのような正しい配列が処理されますそれ自体で。通常のループやそれぞれにループを使用する特別な必要はありません。正式には、構文とセマンティクスはすでにこれを許可しています。問題は開発者の意識の慣性の背後にあるだけです。