3
  $colors = array(
    'r' => 'a',
    'g' => 'b',
    'b' => 'c'
);

list($v, $k) = each($colors);

echo $v . " " . $k

'list'構文は数値配列に対してのみ機能すると思ったので、上記はraを出力します。なぜそれが機能するのですか?

4

2 に答える 2

5

はい、あなたは正しいです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

PHPDOCから

それぞれ配列から現​​在のキーと値のペアを返し、配列カーソルを進めます。

each配列配列から現​​在のキーと値のペアを返します。このペアは、キー0、1、キー、および値を持つ4要素配列で返されます。要素0とkeyには配列要素のキー名が含まれ、1とvalueにはデータが含まれます。

また

each()は通常、配列をトラバースするためにlist()と組み合わせて使用​​されます。例を次に示します。

于 2012-10-14T20:38:24.660 に答える
2

マニュアルをよく読んでくださいeach()

配列配列から現​​在のキーと値のペアを返します。このペアは、キー0、1、キー、および値を持つ4要素配列で返されます。要素0とkeyには配列要素のキー名が含まれ、1とvalueにはデータが含まれます。

したがって、これを行うeach($colors)と、次のようになります。

array(0 => 'r' => 1 => 'a', 'key' => 'r', 'value' => 'a')

次に、とlist()の値を取得し、それぞれに割り当てます。わかる?01$v$k

于 2012-10-14T20:39:28.507 に答える