PHP リスト、各関數(shù)は配列を走査します
さらに 2 つの興味深い配列関數(shù)を?qū)W習してみましょう。これら 2 つの関數(shù)を?qū)Wぶのは難しくありません。ただし、一部の生徒は少し困難に遭遇するでしょう。難しいのは、リスト機能や各機能の動作特性を把握することです。
list関數(shù)
まずlist関數(shù)について話しましょう:
list (mixed $variable 1 [,mixed $variablen ] )
その関數(shù): インデックス配列を0に添字するのは、以下に対応します。変數(shù) 1、添字 1 は変數(shù) 2 に対応し、以下同様となります。
実験で見てみましょう:
<?php list($one , $two , $three) = array('張三' ,'李四' ,'王五'); //再次聲明:單引號不結(jié)釋變量,所以輸出的是字符串$one echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; ?>
実験結(jié)果を見てみましょう:
解析結(jié)果は図の通りです:
結(jié)論:
1.代入Zhang San の添字 0 は $one
を與えた 2. 添字 1 の John の値を $two
に代入 3. 添字 2 の John 5 の値を $three
に代入 したがって、次の関數(shù)が得られることがわかります。リストは左から右に、インデックス配列の 0 から始まる添字値と 1 対 1 に対応します。
リストの別の使用法:
<?php list( , , $three) = array('張三' ,'李四' ,'王五'); echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; ?>
実行結(jié)果:
結(jié)論:
1. リストの最初と 2 番目の変數(shù)の場所は空白のままにしておきます。$3 だけを書きました。
2. 1 対 1 対応の原則によれば、張三と李斯に対応できる変數(shù)はありません。
3. したがって、Wang Wu だけが変數(shù)対応を持っています
インデックス配列の 1 対 1 対応の原則を厳密に覚えておいてください。リストの最初の変數(shù)は添字 0 の配列要素に対応し、添字 1 はリストの 2 番目の配列要素に対応します。
以下の結(jié)果を推測してください。なぜですか?
<?php list($one, $two, $three) = array(2 => '張三', '李四', '王五'); echo '$one----' . $one . '<br />'; echo '$two----' . $two . '<br />'; echo '$three----' . $three . '<br />'; ?>
実行結(jié)果は次のとおりです:
概要:
1. 1 対 1 対応の原則のため、$one は添字 0 を持つ配列要素を見つけることができず、$two は添字 0 を持つ配列要素を見つけることができません。添字 1 の配列要素
3 では、$three だけが添字 2 の配列要素を見つけました。 list($one, $two, $three) には、変數(shù)を 3 つだけ書きました。対応が完了しました。後続の変數(shù)に対応する必要はありません。
それぞれの関數(shù)
それぞれの関數(shù)は、規(guī)則性がより特徴的で、より興味深いものです。
配列それぞれ (配列 &$配列)
関數(shù): 配列を渡します。要素の 1 つを新しい配列に分割します。これを一度に 1 要素ずつ実行します。一度移動し、次の配列要素を同様に操作します。最後まで実行して false を返します。
まず、それぞれが配列要素に対してどのように動作するかを見てみましょう。
<?php //定義一個變量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特別長特別細', 'mei'=>'好白', 'pl'=>'五官端正', 'type'=>'那就是女神', '我是吊絲不敢跟女神搭訕' ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; ?>
それぞれを初めて実行した結(jié)果を見てみましょう:
概要:
1. $kongjie の最初の要素を読み取り、最初の要素 ('gao'=>' を変更します)黒') 分解します。
1 分解後、最初の要素は新しい配列になります。
2新しい配列で、元の値 (黒い服を著ている人) をインデックスの添字 1 に入れ、同時に関連する添字の値にも入れます。
3新しい配列で、元のキー (gao) を関連する添え字キーとインデックス添え字 0 に入れます。
すぐに理解できるように、
を表すために寫真を使用します。
次に、それぞれの別の特徴について説明しましょう。一度読み取って 1 要素後方に移動します。
<?php //定義一個變量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特別長特別細', 'mei'=>'好白', ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----華麗麗分割線------<br />'; //第2次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----華麗麗分割線------<br />'; //第3次each【執(zhí)行到了最后一個元素了】 $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----華麗麗分割線------<br />'; //第4次【此時,后面已沒有可操作的元素了,看返回什么】 $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----華麗麗分割線------<br />'; ?>
実行結(jié)果:
概要:
1. 1 回読み取り、1 回後戻りし [記録された矢印が移動する様子を想像してください]、各要素を新しい配列に逆アセンブルします
2 .読み取りの最後にの場合、操作可能な要素がないため false が返されます。
リストとそれぞれの連攜
リストの特徴とそれぞれの特徴を理解しています。リストをそれぞれ組み合わせて作業(yè)を完了することはできますか?
list($key,$value) = each($array);
前に述べた図を見てみましょう:
リストの最初の変數(shù)は、0 より下のインデックスに移動します。要素に値を指定すると、2 番目の変數(shù)はインデックス添え字 1 を持つ要素を見つけて、変數(shù)に値を割り當てます。
次の例を見てみましょう:
<?php //定義一個變量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'腿特別長特別細', 'mei'=>'好白', ]; list($key,$value) = each($kongjie); echo $key. '-----' .$value .'<br />'; ?>
実行結(jié)果は次のとおりです:
概要:
1. それぞれ変數(shù)を 4 つの要素に分割します
2. そしてリストは 0 =>gao を割り當てます3.list は、変數(shù) $value
に 1 => 黒い服を著ているという値を代入します。それぞれは最後に false を返すので、ブールループ while を使用して配列ループを完了できます。
上記のコードを少し変更して、次の効果を?qū)g現(xiàn)します:
<?php //定義一個變量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特別長特別細', 'mei'=>'好白', ]; while(list($key,$value) = each($kongjie)){ echo $key. '-----' .$value .'<br />'; } ?>
実行デモ:
概要:
1. 1 回ループし、それぞれ 1 回ずつ実行し、コードを?qū)g行して、1 つの要素を後方に移動します
2. 最後に実行はfasleに戻るので、実行は停止します。
3. each と list を組み合わせることで foreach と同じ効果を得ることができます。
宿題:
list と each を使用して、次の配列を走査して表示します:
<?php $arr=array( '教學部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('張某','21','妖人'), ), '宣傳部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('張某','21','妖人'), ), '財務(wù)部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('張某','21','妖人'), ), ); ?>
結(jié)果は次のとおりです: