이 글은 PHP에서 동적으로 생성된 콘텐츠의 배열(생성기) 분석을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
정의:
Generator: "동적으로 생성된 콘텐츠의 배열", 값이 사용될 때만 생성됩니다.
사용 방법: 키워드 항복 foreach
프로세스:
생성기 메서드로서 배열을 정의하는 것과 같습니다.
생성기에서 각 발생은 배열을 정의하는 것과 같습니다.
foreach는 생성기에서 모든 Yield 정의 값(정의된 값(표현식))을 순회하며, 사용되는 경우에만 현재 Yield와 이전 Yield 사이의 다른 표현식이 실행되며, 현재 항복 이후의 표현식은 실행되지 않습니다);
foreach는 정상적으로 종료됩니다(중단되지 않음). 생성기에서 마지막 항복 이후에 실행되지 않은 다른 표현식이 있는지 확인합니다. 그렇다면 실행합니다.
계획된 사용 시나리오:
1. 빅데이터 파일을 가져와서 생성기에서 한 줄씩 읽습니다. ? ? gen.php
1 <?php 2 function gen()
3 {
4 echo '生成器开始执行' . PHP_EOL;
5 for ($i = 0; $i < 5; $i++) {
6 echo '产生数据之前:' . $i . PHP_EOL;
7 yield $i;
8 echo '产生数据之后:' . $i . PHP_EOL;
9 }
10 echo '再来一个数据' . PHP_EOL;
11 yield 5;
12 echo '生成器执行结束' . PHP_EOL;
13 }
14 $gen_func = gen();
15 echo '生成器开始执行了吗?' . PHP_EOL;
16 foreach ($gen_func as $key => $val) {
17 echo '使用数据前' . PHP_EOL;
18 echo '使用数据:' . $val . PHP_EOL;
19 echo '使用数据后' . PHP_EOL;
20 //if ($key >= 4) {
21 //break;
22 //}
23 }
php gen.php
생성기가 실행을 시작했습니까?생성기가 실행을 시작합니다
데이터 생성 전:0
데이터 사용 전
데이터 사용 전:0
데이터 사용 후
데이터 생성 후:0
데이터 생성 전:1
데이터 사용 전
데이터 사용 전:1
데이터 사용 후
데이터 생성 후: 1
데이터 생성 전: 2
데이터 사용 전
데이터 사용: 2
데이터 사용 후
데이터 생성 후: 2
데이터 생성 전: 3
데이터 사용 전
데이터 사용: 3
데이터 사용 후
데이터 생성 후: 3
데이터 생성 전: 4
데이터 사용 전
데이터 사용 후: 4
데이터 사용 후
데이터 생성 후: 4
다른 데이터
데이터 사용 전
데이터 사용 전: 5
데이터 사용 후
Generator End of 실행
1. 14번째 줄은 생성기 gen()을 호출하지 않고 단지 정의합니다.
2. .$val 값이 필요한 경우 현재 위치 a를 기억하고 생성기를 실행합니다.4. Yield에 의해 정의된 위치로 실행하고 값을 가져온 다음 현재 위치 b를 기억하고 a 위치로 돌아갑니다. 3단계와 4단계에서;
6. 루프가 종료되고 마지막으로 정의된 Yield 위치 이후의 나머지 부분이 실행됩니다.
7. 20, 21, 22행의 주석을 제거하고 4 이후를 실행합니다. 데이터 사용 중"이면 더 이상 다른 출력이 없습니다.
기타 (PHP7.1.14 버전만 확인됨)
1. $data = (yield $value);//YES $data = Yield $value;//NO2를 사용할 수 있습니다. ; $val;3. PHP7 이후에는 생성기, 배열을 호출하고 반환 등을 사용할 수 있습니다.
(포털: PHP 매뉴얼에서 확인 가능)
관련 추천 글:
위 내용은 PHP에서 동적으로 콘텐츠를 생성하는 배열(생성기) 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!