PHP 7 새로운 기능 foreach 수정 예시 소개

1.foreach()순환 은 배열 내부 지침 에 더 이상 작용 하지 않 습 니 다.PHP 7 전에 배열 이 foreach 를 통 해 교체 되면 배열 지침 이 이동 합 니 다.이제 부 터 는 그렇지 않 습 니 다.다음 코드 를 보십시오.

$array = [0, 1, 2];
foreach ($array as &$val) 
{
var_dump(current($array));
}
PHP 5 가 실 행 된 결 과 는 int(1)int(2)bool(false)로 인쇄 됩 니 다.
PHP 7 이 실 행 된 결 과 는 int(0)를 세 번 인쇄 합 니 다.즉,배열 의 내부 지침 은 변 하지 않 았 습 니 다.
이전에 실 행 된 결 과 는 int(1),int(2),bool(false)을 인쇄 합 니 다.
2.값 에 따라 순환 할 때 foreach 는 이 배열 의 복사 작업 입 니 다.
foreach 가 값 에 따라 순환 할 때(by-value)foreach 는 이 배열 의 복사 본 을 조작 합 니 다.이렇게 순환 과정 에서 배열 에 대한 수정 은 순환 행위 에 영향 을 주지 않 을 것 이다.

$array = [0, 1, 2];
$ref =& $array; // Necessary to trigger the old behavior
foreach ($array as $val) {
var_dump($val);
unset($array[1]);
}
위의 코드 는 순환 중 에 배열 의 두 번 째 요소 인 unset 를 제거 하지만 PHP 7 은 세 가지 요 소 를 출력 합 니 다.(0,12)
이전 버 전의 PHP 는 1 을 건 너 뛰 고 인쇄 만 합 니 다(02).
3.인용 에 따라 순환 할 때 배열 의 수정 은 순환 에 영향 을 줄 수 있 습 니 다.
순환 할 때 인용 하 는 방식 이 라면 배열 의 수정 은 순환 행위 에 영향 을 줄 수 있다.하지만 PHP 7 버 전 은 많은 장면 아래 위치 유 지 를 최적화 시 켰 습 니 다.예 를 들 어 순환 할 때 배열 에 요 소 를 추가 합 니 다.

$array = [0];
foreach ($array as &$val) {
var_dump($val);
$array[1] = 1;
}
위의 코드 에 추 가 된 요소 도 순환 에 참여 합 니 다.그러면 PHP 7 은'int(0)int(1)'를 인쇄 하고,이전 버 전 은'int(0)'만 인쇄 합 니 다.
4.간단 한 대상 plain(non-Traversable)의 순환.
간단 한 대상 의 순환 은 값 에 따라 순환 하 든 인용 에 따라 순환 하 든 인용 에 따라 배열 을 순환 하 는 행위 와 같다.하지만 위치 관 리 는 더 정확 할 것 이다.
5.교체 대상(Traversable objects)대상 에 대한 행 위 는 이전 과 일치 합 니 다.
컴 파 일 러:stackoverflow 위의 설명:Traversable object is one that implements Iterator or Iterator Aggregate interface.한 대상 이 iterator 나 Iterator Aggregate 인 터 페 이 스 를 실현 하면 교체 대상 이 라 고 할 수 있다.
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 PHP 7 의 새로운 특성 인 foreach 수정 입 니 다.여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기