PHP リスト、各関数は配列を走査します
さらに 2 つの興味深い配列関数を学習してみましょう。これら 2 つの関数を学ぶのは難しくありません。ただし、一部の生徒は少し困難に遭遇するでしょう。難しいのは、リスト機能や各機能の動作特性を把握することです。
list関数
まずlist関数について話しましょう:
list (mixed $variable 1 [,mixed $variablen ] )
その関数: インデックス配列を0に添字するのは、以下に対応します。変数 1、添字 1 は変数 2 に対応し、以下同様となります。
実験で見てみましょう:
<?php list($one , $two , $three) = array('张三' ,'李四' ,'王五'); //再次声明:单引号不结释变量,所以输出的是字符串$one echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; ?>
実験結果を見てみましょう:
解析結果は図の通りです:
結論:
1.代入Zhang San の添字 0 は $one
を与えた 2. 添字 1 の John の値を $two
に代入 3. 添字 2 の John 5 の値を $three
に代入 したがって、次の関数が得られることがわかります。リストは左から右に、インデックス配列の 0 から始まる添字値と 1 対 1 に対応します。
リストの別の使用法:
<?php list( , , $three) = array('张三' ,'李四' ,'王五'); echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; ?>
実行結果:
結論:
1. リストの最初と 2 番目の変数の場所は空白のままにしておきます。$3 だけを書きました。
2. 1 対 1 対応の原則によれば、張三と李斯に対応できる変数はありません。
3. したがって、Wang Wu だけが変数対応を持っています
インデックス配列の 1 対 1 対応の原則を厳密に覚えておいてください。リストの最初の変数は添字 0 の配列要素に対応し、添字 1 はリストの 2 番目の配列要素に対応します。
以下の結果を推測してください。なぜですか?
<?php list($one, $two, $three) = array(2 => '张三', '李四', '王五'); echo '$one----' . $one . '<br />'; echo '$two----' . $two . '<br />'; echo '$three----' . $three . '<br />'; ?>
実行結果は次のとおりです:
概要:
1. 1 対 1 対応の原則のため、$one は添字 0 を持つ配列要素を見つけることができず、$two は添字 0 を持つ配列要素を見つけることができません。添字 1 の配列要素
3 では、$three だけが添字 2 の配列要素を見つけました。 list($one, $two, $three) には、変数を 3 つだけ書きました。対応が完了しました。後続の変数に対応する必要はありません。
それぞれの関数
それぞれの関数は、規則性がより特徴的で、より興味深いものです。
配列それぞれ (配列 &$配列)
関数: 配列を渡します。要素の 1 つを新しい配列に分割します。これを一度に 1 要素ずつ実行します。一度移動し、次の配列要素を同様に操作します。最後まで実行して false を返します。
まず、それぞれが配列要素に対してどのように動作するかを見てみましょう。
<?php //定义一个变量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特别长特别细', 'mei'=>'好白', 'pl'=>'五官端正', 'type'=>'那就是女神', '我是吊丝不敢跟女神搭讪' ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; ?>
それぞれを初めて実行した結果を見てみましょう:
概要:
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【执行到了最后一个元素了】 $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 />'; ?>
実行結果:
概要:
1. 1 回読み取り、1 回後戻りし [記録された矢印が移動する様子を想像してください]、各要素を新しい配列に逆アセンブルします
2 .読み取りの最後にの場合、操作可能な要素がないため false が返されます。
リストとそれぞれの連携
リストの特徴とそれぞれの特徴を理解しています。リストをそれぞれ組み合わせて作業を完了することはできますか?
list($key,$value) = each($array);
前に述べた図を見てみましょう:
リストの最初の変数は、0 より下のインデックスに移動します。要素に値を指定すると、2 番目の変数はインデックス添え字 1 を持つ要素を見つけて、変数に値を割り当てます。
次の例を見てみましょう:
<?php //定义一个变量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'腿特别长特别细', 'mei'=>'好白', ]; list($key,$value) = each($kongjie); echo $key. '-----' .$value .'<br />'; ?>
実行結果は次のとおりです:
概要:
1. それぞれ変数を 4 つの要素に分割します
2. そしてリストは 0 =>gao を割り当てます3.list は、変数 $value
に 1 => 黒い服を着ているという値を代入します。それぞれは最後に false を返すので、ブールループ while を使用して配列ループを完了できます。
上記のコードを少し変更して、次の効果を実現します:
<?php //定义一个变量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特别长特别细', 'mei'=>'好白', ]; while(list($key,$value) = each($kongjie)){ echo $key. '-----' .$value .'<br />'; } ?>
実行デモ:
概要:
1. 1 回ループし、それぞれ 1 回ずつ実行し、コードを実行して、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','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); ?>
結果は次のとおりです:
。