php foreach는 연관 배열을 탐색합니다.
foreach 기본 구문
이전 장의 내용을 통해 연속된 첨자의 인덱스 배열을 순회하는 방법을 배웠습니다. 그러나 우리는 연관 배열을 순회할 수 없으며, 불연속적인 첨자가 있는 인덱스 배열도 순회할 수 없다는 것을 발견했습니다.
음, 루프에 대해 배울 때 배열을 반복하는 데 특별히 사용되는 부울 루프가 있었습니다. 이 루프의 기본 구문은 foreach의 기본 구문입니다.
구문 형식은 다음과 같습니다.
foreach( 要循环的数组变量 as [键变量 =>] 值变量){ //循环的结构体 }
연관 배열 트래버스
이것은 고정된 사용법입니다. 에 루프됩니다.
as는 고정 키워드입니다.
뒤의 키 변수는 선택 사항입니다. 루프가 실행될 때마다 foreach 구문은 키를 꺼내어
뒤의 키 변수에 할당합니다. 값 변수가 필요합니다. 반복될 때마다 값은 value 변수에 배치됩니다.
이 구문에 대한 이해를 돕기 위해 코드를 예로 들어 보겠습니다.
<?php $data = [ 'fj' => '凤姐', 'fr' => '芙蓉', ]; foreach($data as $key => $value){ echo $key . '-------' . $value . '<br />'; } //如果我们只想读取值的话,就可以把下面的$key => 给删除掉,读取的时候,就只读取值了。做完上面的实验,你可以打开下面的代码再实验几次。 /* foreach($data as $value){ echo $value . '<br />'; } */ ?>
실행하여 결과를 확인해 보겠습니다.
위의 실행 결과를 통해 다음과 같은 결과를 얻습니다.
1. 루프를 돌릴 때마다 아래 첨자를 $key 변수에 할당하고 value 변수를 $value
변수에 할당합니다. 2. 루프에서 키와 값을 한 번 읽습니다. 위의 예와 같이 "Sister Feng"을 읽은 후 "Furong"을 읽습니다. 끝까지 읽은 후 읽을 수 있는 배열 요소가 없으면 루프가 데이터 순회를 중지합니다.
참고: $key 및 $value는 변수 이름일 필요는 없습니다. $kai => $wen과 같이 다른 이름을 지정할 수도 있습니다. 키가 할당된 변수와 값이 할당된 다른 변수를 알아야 합니다.
인덱스 배열 순회
foreach는 배우기 매우 쉽습니다. 따라서 다음 예와 같이 foreach를 통해 연속 인덱스 배열을 탐색할 수 있습니다.
<?php $data = array( 0 => '中国', 100 => '美国', 20 => '韩国', 300 => '德国', ); //待会儿可以自己做做实验,循环遍历一下下面的这个数组 //$data = array(1,2,3,4,5,6,7,8,9,10); foreach($data as $k => $v){ echo $k . '------' . $v .'<br />'; } ?>
실행하여 결과를 확인합니다.
foreach의 결과는 방금 수행한 것과 동일합니다. 연관 배열의 결과는 동일합니다.
차이점은 불연속 인덱스 배열입니다. 배열의 요소를 읽을 때마다 현재 루프의 첨자가 변수 $k에 할당되고 값이 변수 $v에 할당됩니다. 각 읽기에 대해 키와 값이 출력된 후 표시됩니다. 루프는 한 번에 한 인덱스씩 뒤로 이동합니다. 끝까지 읽고 실행을 종료합니다.
다차원 배열 순회
배열에 다른 배열이 있는 경우 어떻게 순회해야 하나요? 실험을 해보겠습니다:
<?php $data = array( 0 => array( '中国' => 'china', '美国' => 'usa', '德国' => ' Germany', ), 1 => array( '湖北' => 'hubei', '河北' => 'hebei', '山东' => 'shandong', '山西' => 'sanxi', ), ); //注:我们在使用foreach循环时,第一次循环将键为0和键为1的两个数组赋值给一个变量($value)。然后,再套一个循环遍历这个$value变量,$value中的值取出来,赋值给$k和$v。 foreach($data as $value){ //第一次循环把国家的数组赋值给了$value //第二次循环把中国的省份的数组又赋值给了$value //因此,我在循环的时候把$value再遍历一次 foreach($value as $k => $v){ echo $k . '-----' . $v .'<br />'; } //为了看的更清晰,我在中间加上华丽丽的分割线方便你来分析 echo '----------分割线-----------<br />'; } ?>
결과는 다음과 같습니다:
요약:
첫 번째 루프에서는 배열이 $value 에 할당되고 다음을 사용합니다. foreach는 $value를 반복합니다. 2차원 하위 배열의 키를 $k에 제공하고 값을 변수 $v에 할당합니다.
첫 번째 루프는 하위 배열의 루프를 종료하고 후속 코드가 실행되어 구분선을 표시합니다.
두 번째 주기에도 마찬가지입니다.
Job
은 다음 배열을 탐색하여 표시합니다:
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); ?>
, 효과는 다음과 같습니다:
요약 :
1. 첫 번째 루프에서는 $value에 배열을 할당한 다음 foreach를 사용하여 $value를 루프합니다. 2차원 하위 배열의 키를 $k에 제공하고 값을 변수 $v에 할당합니다.
2. 첫 번째 루프는 하위 배열 루프를 종료하고 후속 코드가 실행되어 구분선을 표시합니다.
3. 등등 2주기도 마찬가지입니다.