初学者です。
「はじめてのPHP」オライリージャパン p98
上記のPHPの参考書籍をすすめていると以下のような記述の解説がありました。
表示結果を見ると以下のような順序で出力されています。
php
1Soup contains chicken. 2Sandwich contains chicken. 3Sandwich contains bread. 4Soup contains water.
コードの記述の順番は以下の通りです。
php
1foreach(['chicken','lemon','bread','water'] as $ing){ 2 if($soup->hasIngredient($ing)){ 3 print "Soup contains $ing.\n"; 4 echo "<br>"; 5 } 6 if($sandwich->hasIngredient($ing)){ 7 print "Sandwich contains $ing.\n"; 8 echo "<br>"; 9 } 10}
こういうケースだと、コードの記述順通り
if($soup->hasIngredient($ing)){…}から処理されて
まず
php
1Soup contains chicken. 2Soup contains water.
と表示されて、続いて
if($sandwich->hasIngredient($ing)){…}
以下のように表示されないのですか?
PHP
1Sandwich contains chicken. 2Sandwich contains bread. 3
2つのif文をひっくるめって
foreach(['chicken','lemon','bread','water'] as …
検索する文字列(配列の文字順)'chicked','lemon' …通りまず頭の'chicken'から探していき'bread','water'の順番で$ingに代入され出力されているのでしょうか?
foreachの中に仮に$drinkなど3つ、4つのif文が使われていもif文で区切られることなく
['chicken','lemon','bread','water']の配列の頭から全文ループされると考えていいのでしょうか?
少し混乱しています。どなたか簡潔に教えていただけないでしょうか。よろしくお願いいたします。
<Entree.php>
php
1<?php 2 3class Entree { 4 public $name; 5 public $ingredients = array(); 6 7 public function hasIngredient($ingredient){ 8 return in_array($ingredient, $this->ingredients); 9 } 10} 11 12$soup = new Entree(); 13$soup->name = 'Chicken Soup'; 14$soup->ingredients = array('chicken','water'); 15 16$sandwich = new Entree(); 17$sandwich->name = 'Chicken Sandwich'; 18$sandwich->ingredients = array('chicken', 'bread'); 19 20foreach(['chicken','lemon','bread','water'] as $ing){ 21 if($soup->hasIngredient($ing)){ 22 print "Soup contains $ing.\n"; 23 echo "<br>"; 24 } 25 if($sandwich->hasIngredient($ing)){ 26 print "Sandwich contains $ing.\n"; 27 echo "<br>"; 28 } 29} 30?> 31
<表示結果>
PHP
1Soup contains chicken. 2Sandwich contains chicken. 3Sandwich contains bread. 4Soup contains water.
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。