ホームページ  >  記事  >  バックエンド開発  >  配列 list()、each()、while をループする PHP の 3 つのメソッドのまとめ

配列 list()、each()、while をループする PHP の 3 つのメソッドのまとめ

不言
不言オリジナル
2018-06-06 11:56:403686ブラウズ

この記事では主に、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_expression

list() ステートメントは、配列をパラメーターとして直接受け取りません。代わりに、配列内の各要素の値は、「=」演算子を使用した代入によって list() 関数の各パラメータに割り当てられます。 list() 関数は、その中の各パラメータを、スクリプト内で直接使用できる変数に変換します。使用法は次のとおりです:


コードをコピーします コードは次のとおりです:

<?php
$info = array(&#39;coffee&#39;,&#39;brown&#39;,&#39;caffeine&#39;);
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 &#39;<dl>一个联系人信息:&#39;;
 
while(list($key,$value) = each($contact)){
echo "<dd>$key : $value</dd>";
}
 
echo &#39;</dl>&#39;;
?>

同じ方法で多次元配列をネストしたり走査したりすることもできます。 while 配列の走査結果は freach ステートメントの結果と同じですが、2 つのメソッドには違いがあります。 while ステートメントを使用して配列を走査した後、 each() ステートメントは、渡された配列パラメーターの内部ポインターを配列の末尾にポイントしています。 while ステートメントを使用して同じ配列を再度走査すると、配列ポインターはすでに配列の末尾にあり、each() ステートメントは直接 FALSE を返し、while ステートメントはループ内で実行されません。配列ポインタを最初の要素にリセットするには、while ステートメントが実行される前にのみ、reset() 関数を呼び出してください。 foreach ステートメントは、配列のポインター位置を自動的にリセットします。foreach の実行が開始されると、配列内のポインターは自動的に最初のユニットを指します。これは、foreach ループの前にreset() 関数を呼び出す必要がないことを意味します。


関連する推奨事項:

PHPページエンコーディングの宣言方法(ヘッダーまたはメタ)の詳細説明

phpの丸め関数コード(floor関数、ceil関数、roundとintval)

以上が配列 list()、each()、while をループする PHP の 3 つのメソッドのまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。