配列を走査する PHP ループの 3 つのメソッド list()、each()、while の概要を主に紹介します。これら 3 つのメソッドの混合使用に焦点を当てています。
①each()関数
each()関数は、配列をパラメータとして渡し、配列内の現在の要素のキーと値のペアを返し、配列ポインタを次の要素の位置に後方に移動する必要があります。キーと値のペアは、キー 0、1、キー、および値を含む 4 つの要素を含む混合連想配列およびインデックス付き配列として返されます。キー名の 0 は配列要素のキー名である key に対応する値と同じであり、1 と value には配列要素の値が含まれます。内部ポインタが配列の末尾を超える場合、each() は FALSE を返します。 each() 関数の使い方は以下の通りです:<?php $contact = array("ID" => 1,"姓名" => "高某","公司" => "A公司","地址" => "北京市",); $id = each($contact); //返回数组$contact中第一个元素的键/值对,是带有4个元素的数组 print_r($id); //输出数组$id:Array([1]=>1,[value]=>1,[0]=>ID,[key]=>ID) $name = each($contact); //返回数组$contact中的第二个元素的键/值对,是带有4个元素的数组 print_r($name); //输出Array([1]=>高某,[value]=>高某,[0]=>姓名,[key]=>姓名) $company = each($contact); print_r($company); //输出Array([1]=>A公司,[value]=>A公司,[0]=>公司,[key]=>公司) $address = each($contact); print_r($address); //输出Array([1]=>北京市,[value]=>北京市,[0]=>地址,[key]=>地址) $no = each($contact); var_dump($no); //输出bool(false) ?>
②list() 関数
これは実際の関数ではなく、PHP の言語構造です。 list() は、1 つのステップで一連の変数に値を割り当てます。つまり、配列内の値をいくつかの変数に割り当てます。 list() は数値インデックス付きの配列でのみ使用でき、配列インデックスは 0 から始まると想定されます。構文形式は次のとおりです。list(mixed varname,mixed…) = array_expressionlist() ステートメントの使用方法は、他の関数とは大きく異なり、パラメーターとして配列を直接受け取りません。代わりに、配列内の各要素の値が、代入を通じて list() 関数内の各パラメータに割り当てられます。 list() 関数は、その中の各パラメータを、スクリプト内で直接使用できる変数に変換します。使い方は以下の通りです。
<?php $info = array('coffee','brown','caffeine'); list($drink,$color,$power) = $info; list($drink,,$power) = $info; //变量的值是数组中第一个和第三个值 list( , ,$power) = $info; //变量值是数组中第三个元素的值 ?>上記の例で list() 関数の使い方を理解した後、 each() 関数と list() 関数を組み合わせます。コードは次のとおりです。
<?php $contact = array("ID" => 1,"姓名" => "高某","公司" => "A公司","地址" => "北京市",); list($key,$value) = each($contact); echo "$key => $value"; //输出变量$key和$value,中间使用“=>”分割 ?>
③
while ループ配列の走査 前に紹介した each() ステートメントと list() ステートメントを使用すると、while ループを使用して走査する方法を理解するのは難しくありません。配列。使用される構文形式は次のとおりです。
while(list($key,$value) = each(array_expression)){ 循环体 }この共用体形式は、指定された array_expression 配列を走査します。 while() ステートメントの各ループで、 each() ステートメントは現在の配列要素のキーを list() 関数の最初のパラメーター変数 $key に割り当てます。そして、現在の配列要素の値を list() 関数の 2 番目のパラメーター変数 $value に代入します。 each() ステートメントが実行された後、配列内のポインターは 1 ステップ前に移動します。そのため、次回は while( ) ステートメントがループすると、配列内の次の要素のキーと値のペアが取得されます。配列の終わりまで、each() ステートメントは FALSE を返し、while() ステートメントはループを停止し、
配列の走査
を終了します。<?php $contact = array( "ID" => 1, "姓名" => "高某", "公司" => "A公司", "地址" => "北京市", "电话" => "(010)98765432", "EMAIL" => "gao@brophp.com", ); //以HTML列表的方式输出数组中每个元素的信息 echo '<dl>一个联系人信息:'; while(list($key,$value) = each($contact)){ echo "<dd>$key : $value</dd>"; } echo '</dl>'; ?>は、同じ方法で 多次元配列 をネストして走査することもできます。 while 配列の走査結果は freach ステートメントの結果と同じですが、2 つのメソッドには違いがあります。 while ステートメントを使用して配列を走査した後、 each() ステートメントは、渡された配列パラメーターの内部ポインターを配列の末尾にポイントしています。 while ステートメントを使用して同じ配列を再度走査すると、配列ポインターはすでに配列の末尾にあり、each() ステートメントは直接 FALSE を返し、while ステートメントはループ内で実行されません。配列ポインタを最初の要素にリセットするには、while ステートメントが実行される前にのみ、reset() 関数を呼び出してください。
foreach ステートメントは、配列のポインター位置を自動的にリセットします。foreach の実行が開始されると、配列内のポインターは自動的に最初のユニットを指します。これは、foreach ループの前にreset() 関数を呼び出す必要がないことを意味します。
以上が配列 list()、each()、while をループする 3 つのメソッドの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。