1.각각의 사용법
먼저 API를 살펴보겠습니다
각각 배열( array &$array )
이는 API에 설명되어 있습니다. 각각 — 배열의 현재 키/값 쌍을 반환하고 배열 포인터를 한 단계 앞으로 이동합니다.
먼저 반환된 배열이 어떤 모습인지 살펴볼까요?
<code><span><?php</span><span>$arr</span> = <span>array</span>(<span>'你'</span>,<span>'若'</span>,<span>'安'</span>,<span>'好'</span>,<span>'便'</span>,<span>'是'</span>,<span>'晴'</span>,<span>'天'</span>); print_r(each(<span>$arr</span>)); print_r(each(<span>$arr</span>)); <span>echo</span><span>'<hr />'</span>; <span>/* 返回 Array ( [1] => 你 [value] => 你 [0] => 0 [key] => 0 ) Array ( [1] => 若 [value] => 若 [0] => 1 [key] => 1 ) */</span><span>//执行相同的一段代码,从‘你’到‘若’,说明each是会每执行一次,游标向数组尾部移动一步</span><span>//0和Key存放的是键</span><span>//1和value存放的是值</span><span>//因此each满足遍历数组的,得到当前的键和值,以及每执行一次,向尾部移动一步游标</span><span>//因此循环数组也可以用each这么写</span> reset(<span>$arr</span>); <span>for</span>(;<span>$tmp</span>=each(<span>$arr</span>);){ <span>echo</span><span>$tmp</span>[<span>0</span>],<span>'~'</span>,<span>$tmp</span>[<span>1</span>],<span>'<br />'</span>; } <span>/* 返回 0~你 1~若 2~安 3~好 4~便 5~是 6~晴 7~天 */</span><span>?></span></code>
2. 리스트 사용법
먼저 API가 말하는 내용을 살펴보겠습니다.
array()와 마찬가지로 이는 실제 함수가 아니라 언어 구성입니다. list()는 한 단계로 변수 집합에 값을 할당합니다.
예를 살펴보겠습니다.
<code><span><?php</span><span>list</span>(<span>$a</span>,<span>$b</span>)=<span>array</span>(<span>10</span>,<span>20</span>); <span>echo</span><span>$a</span>,<span>'~'</span>,<span>$b</span>,<span>'<br />'</span>; <span>//返回10~20</span><span>?></span></code>
예, 변수 집합에 값을 할당할 수 있습니다.
또 다른 예를 살펴보겠습니다.
<code><span><?php</span><span>list</span>(<span>$a</span>,<span>$b</span>,,<span>$c</span>)=<span>array</span>(<span>2</span>=><span>10</span>,<span>3</span>=><span>20</span>,<span>4</span>=><span>30</span>,<span>1</span>=><span>40</span>); <span>echo</span><span>$a</span>,<span>'~'</span>,<span>$b</span>,<span>'~'</span>,<span>$c</span>,<span>'<br />'</span>; <span>//返回notice~40~20</span><span>//执行到$a的时候返回给我一个notice:说数组没有0键</span><span>?></span></span></code>
일반적인 생각에 따르면 10~20~40을 반환해야 합니다.
이 공지~40~20이 반송된 이유는 무엇인가요?
답변: 이는 목록의 작동 메커니즘과 관련이 있습니다.
우선, 오른쪽 배열을 무시하고 목록의 변수를 살펴보세요. 왼쪽에서 오른쪽으로
<code><span><?php</span><span>$arr</span> = <span>array</span>(<span>'你'</span>,<span>'若'</span>,<span>'安'</span>,<span>'好'</span>,<span>'便'</span>,<span>'是'</span>,<span>'晴'</span>,<span>'天'</span>); <span>for</span>(;<span>list</span>(<span>$k</span>,<span>$v</span>)=each(<span>$arr</span>);){ <span>echo</span><span>$k</span>,<span>'~'</span>,<span>$v</span>,<span>'<br />'</span>; } <span>/* return: 0~你 1~若 2~安 3~好 4~便 5~是 6~晴 7~天 */</span><span>?></span></code>