PHP 4에서는 Perl 및 기타 언어와 마찬가지로 foreach 구문이 도입되었습니다. 이는 배열을 반복하는 편리한 방법일 뿐입니다. foreach는 배열에만 사용할 수 있으며, 다른 데이터 유형이나 초기화되지 않은 변수와 함께 사용하려고 하면 오류가 발생합니다. 두 가지 구문이 있는데, 두 번째 구문은 덜 중요하지만 첫 번째 구문의 유용한 확장입니다.
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
첫 번째 형식은 지정된 array_expression 배열을 반복합니다. 루프를 통과할 때마다 현재 셀의 값이 $value에 할당되고 배열 내부의 포인터가 한 단계 앞으로 이동합니다(따라서 다음 루프에서 다음 셀을 얻습니다).
두 번째 형식은 현재 셀의 키 이름이 각 루프의 $key 변수에도 할당된다는 점을 제외하면 동일한 작업을 수행합니다.
먼저 첫 번째 명령문을 살펴보겠습니다. 이 명령문은 배열 표현식을 참조합니다. as $val 명령문은 배열의 값을 순차적으로 가져와서 $val 변수에 저장합니다. 배열의 값을 얻습니다. 그러나 배열의 아래 첨자 인덱스 값은 얻지 못합니다. 예:
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); foreach($myArray as $val) { print($val." "); }
결과는 다음과 같이 출력됩니다: val1 val2 val3
두 번째 형식을 살펴보겠습니다. 첫 번째 형식처럼 배열의 요소 값을 가져오는 것 외에도 두 번째 형식도 요소의 인덱스 값을 가져와 $key 변수에 저장할 수 있습니다. 배열의 경우 인덱스 값을 수동으로 설정하지 않은 경우에는 시스템 기본 설정 값인
으로 돌아갑니다.
긍정적인 예 보기:
간단한 1차원 배열을 살펴보겠습니다.
$myArray=array("1"=>"val1","2"="val2","3"=>"val3"); foreach($myArray as $key=>$val) { print($key."=>".$val.";"); }
프로그램은 1=>val1;2=>val2;3=>val3;을 출력합니다. 다음으로, 보다 복잡한 2차원 배열 순회를 살펴보겠습니다.
$myArray=array( "1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"), "2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"), "3"=>array("31"=>"val31","32"=>"val32","33"=>"val33") ); print("<ul>"); foreach($myArray as $key=>$val) { print("<li>".$key."</li>"); if (is_array($val)) { //判断$val的值是否是一个数组,如果是,则进入下层遍历 print("<ul>"); foreach($val as $key=>$val) { print("<li>".$key."=>".$val."</li>"); } print("</ul>"); } } print("</ul>");
출력 결과:
1 11=>val11 12=>val12 13=>val13 2 21=>val21 22=>val22 23=>val23 3 31=>val31 32=>val32 33=>val33
예제를 사용하여 퍼즐을 풀어보겠습니다
<?php $a = array("1"=>"语文","2"=>"数学","3"=>"英语"); $b = array("1"=>"95","2"=>"99","3"=>"92"); foreach($a as $key=>$value){ echo $value; echo $b[$key]."<br>"; } ?>
질문은 $b 배열의 값을 출력하기 위해 $b[$value] 대신 $b[$key]를 사용하는 이유입니다.
이게 왜요?
$a = array("1"=>"중국어","2"=>"수학","3"=>"영어");
위와 아래가 똑같습니다
$a[1]="중국어";
$a[2]="수학"
$a[3]="영어"
위 배열을 어떻게 출력하나요?
echo $a[1];이어야 합니다.
그렇죠?
의심할 여지가 없다면 계속하세요! ! ! !
----------------------------
foreach라고만 말하면 됩니다
형식은 다음과 같습니다. foreach(배열 이름 아래 첨자 => 값)
아래 첨자는 위의 $a[1]이고, 여기서 1은 배열의 첨자입니다!
이제 $a[$key]가 왜 이렇게 출력되는지 이해해야 합니다
어떻게 변경되든 배열의 출력 방법은 $a['중국어']가 아닌 항상 $a[1]라는 점을 기억하세요.
============================================= === =================
foreach()에는 두 가지 용도가 있습니다.
1: foreach(array_name as $value){ statement; }
여기서 array_name은 순회하려는 배열의 이름입니다. 각 루프에서 array_name 배열의 현재 요소 값이 $value에 할당되고 배열 내부의 첨자가 한 단계 아래로 이동합니다. 다음 루프에서 다시 얻는 것.
2:foreach(array_name as $key => $value){ statement; }
이 방법과 첫 번째 방법의 차이점은 추가 $key가 있다는 것입니다. 즉, 현재 요소의 값을 $value에 할당하는 것 외에도 현재 요소의 키 값도 $value에 할당됩니다. 각 루프의 변수 $key. 키 값은 아래 첨자 값 또는 문자열일 수 있습니다. 예를 들어 book[0]=1의 "0", book[id]="001"의 "id"입니다.
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.