$colors = array(
'r' => 'a',
'g' => 'b',
'b' => 'c'
);
list($v, $k) = each($colors);
echo $v . " " . $k
'list'構文は数値配列に対してのみ機能すると思ったので、上記はraを出力します。なぜそれが機能するのですか?
はい、あなたは正しいですlist()は数値配列でのみ機能し、数値インデックスは0から始まると想定しています。しかし、彼はあなたのコードが。のために機能している理由を説明していますeach
。
each
traverse an array
したがって、次のコマンドを実行すると、keys
を例に変換します。numerical
$foo = array("r"=>"a");
$bar = each($foo);
echo "<pre>";
print_r($bar);
出力
Array
(
[1] => a
[value] => a
[0] => r
[key] => r
)
array('r' => 'a');
に変換されたものを使用array(0 => 'r', 1 => 'a');
できるlist
ので、numerical keys
それぞれ配列から現在のキーと値のペアを返し、配列カーソルを進めます。
each配列配列から現在のキーと値のペアを返します。このペアは、キー0、1、キー、および値を持つ4要素配列で返されます。要素0とkeyには配列要素のキー名が含まれ、1とvalueにはデータが含まれます。
また
each()は通常、配列をトラバースするためにlist()と組み合わせて使用されます。例を次に示します。
マニュアルをよく読んでくださいeach()
:
配列配列から現在のキーと値のペアを返します。このペアは、キー0、1、キー、および値を持つ4要素配列で返されます。要素0とkeyには配列要素のキー名が含まれ、1とvalueにはデータが含まれます。
したがって、これを行うeach($colors)
と、次のようになります。
array(0 => 'r' => 1 => 'a', 'key' => 'r', 'value' => 'a')
次に、とlist()
の値を取得し、それぞれに割り当てます。わかる?0
1
$v
$k