配列トラバーサルを実装するには多くの方法があります:
1. 連続的にインデックス付けされた配列:
配列のインデックスが連続 (0 1 2...) であるため、連続配列トラバーサルの実装は非常に簡単です。そのため、まず count() 関数を使用して配列内の要素の数を計算し、次に次のように for ループを作成します:
$subject=array("数学","英語","物理");
$num_elements=count($subject); //この時の$num_elementsの値は3です
for ($i=0;$i
echo ("$subject[$i]
ん");
}
結果は次のとおりです:
数学
英語
物理学
配列要素のインデックスはデフォルトで 0 1 2 であるため、ここでは $i に初期値 0 を割り当てます。最初の要素のインデックスが 0 でない場合、必要なのは次のとおりです。
$subject=array(3=>"数学","英語","物理");
$num_elements=count($subject)+3; //ここに注目
;for ($i=3;$i
echo ("$subject[$i]
ん");
}
ここでは $i に 3 の値が割り当てられており、$num_elements=count($subject)+3 これは見落とされがちです。
2. 不連続なインデックスの配列:
$subject=array("m"=>"数学","e"=>"英語","p"=>"物理学");
ここではインデックス値「m」「e」「p」をそれぞれ持つ配列が作成されます。そのような配列を走査するにはどうすればよいですか?
方法 1: list() 関数と each() 関数を組み合わせて使用する
$subject=array("m"=>"数学","e"=>"英語","p"=>"物理学");
reset($subject); //最初の要素へのポインタをリセットします
while (list($key,$value)=each($subject)){
echo "$key は $value です
ん"; }
方法 2: foreach ステートメントを使用する
$subject=array("m"=>"数学","e"=>"英語","p"=>"物理学");
foreach($subject as $key => $value){
echo "$key は $value です
「ん」;
}
?>
list()や each()よりも簡単ではないでしょうか?
foreach と list() each() の組み合わせの違い:
Foreach は、元の配列のコピーに対して操作を実行します。この利点は、現在の配列ポインタの位置に影響を与えないことです。欠点は、大きな配列の場合、コピーに時間がかかることです。
List() each() の組み合わせ これを使ってトラバースするとポインタの位置が変わるのは明らかです。
方法 3: array_walk() 関数を使用して配列を走査する
Array_walk() を使用すると、ユーザーは配列内の各要素を処理する関数をカスタマイズできます。
$subject=array("数学","英語","物理");
関数 printElement($element){
print("$要素
ん");
}
array_walk($subject,"printElement");
上記は、Bangkejia.com が紹介した PHP で配列を走査する方法です。お役に立てば幸いです。
を使用できます。