配列を使用する場合、多くの場合、配列を走査する必要があります。多くの場合、配列を反復処理して個々のキーまたは値を取得する (またはキーと値の両方を取得する) 必要があるため、当然のことながら、PHP はこの目的のためにいくつかの関数を提供します。多くの関数は、現在のポインター位置にあるキーまたは値を取得するだけでなく、ポインターを次の適切な位置に移動するという 2 つのタスクを実行します。
現在の配列キーを取得します key()
key() 関数は、input_array の現在のポインター位置にあるキーを返します。その形式は次のとおりです。
mixed key(array array)
次の例では、配列を反復処理してポインタを移動することにより、$fruits 配列のキーを出力します。
$fruits = array("apple"=> "赤", "バナナ"=>"黄");
while ($key = key($fruits)) {
printf("%s
", $key);
next($フルーツ);
}
// リンゴ
// バナナ
key() が呼び出されるたびにポインタが移動するわけではないことに注意してください。この目的のために、 next() 関数を使用する必要があります。この関数の唯一の機能は、ポインターを進めるタスクを完了することです。
現在の配列値を取得する current()
current() 関数は、配列内の現在のポインター位置にある配列値を返します。その形式は次のとおりです:
mixed current(array array)
今回は、配列値を取得したいと思います:
$fruits = array("apple"=>"red", "バナナ"= >"黄色");
while ($fruit = current($fruits)) {
printf("%s
", $fruit);
next($fruits);
}
// 赤
// 黄
現在の配列のキーと値を取得します each()
each() 関数は、input_array の現在のキーと値のペアを返し、ポインターを 1 位置進めます。その形式は次のとおりです:
array each(array array)
返される配列には 4 つのキーが含まれ、key 0 と key にはキー名が含まれ、key 1 と value には対応するデータが含まれます。 each() が実行される前にポインタが配列の末尾にある場合は、false が返されます。
$fruits = array("apple", "banana", "orange", "pear");
print_r ( each($fruits) );
// Array ( [1] => apple [value] => apple [0] => 0 [key] => )
each() は、配列を走査するためによく使用されます。この例は前の例と似ていますが、配列全体がループで出力されます。
while (list ($key, $val) = each($fruits))
{
echo "$key => $val
";
}
// 0 => apple
// 1 => ; バナナ
// 2 => オレンジ
// 3 => 梨
配列を別の配列に割り当てると、元の配列ポインターがリセットされるため、上記の例では、ループ内 $fruits を別の変数に代入すると、無限ループが発生します。