PHP55 새로운 기능 수율 생성기

WBOY
풀어 주다: 2016-07-28 08:27:01
원래의
1159명이 탐색했습니다.

php 공식 문서 산출량 http://php.net/manual/zh/언어.generators.overview.php

참조: http://laravelacademy.org/post/4317.html

생성기는 간단한 객체 반복을 구현하는 더 쉬운 방법을 제공합니다. Iterator 인터페이스를 구현하기 위해 클래스를 정의하는 것에 비해 성능 오버헤드와 복잡성이 크게 줄어듭니다.

생성기를 사용하면 foreach 블록에 코드를 작성하여 메모리에 배열을 만들지 않고도 데이터 집합을 반복할 수 있습니다. 이렇게 하면 메모리 제한에 도달하거나 상당한 처리 시간이 소요됩니다. 대신 일반 사용자 정의 함수처럼 생성기 함수를 작성할 수 있으며, 한 번만 반환하는 일반 함수 대신 생성기는 반복해야 하는 값을 생성하는 데 필요한 만큼 여러 번 생성할 수 있습니다.

<code><span>$length</span> = <span>1000000</span>;
<span>//生成器</span><span>foreach</span> (yieldTest(<span>$length</span>) <span>as</span><span>$v1</span>) {
    <span>echo</span><span>$v1</span>;
}
<span><span>function</span><span>yieldTest</span><span>(<span>$length</span>)</span> {</span><span>for</span>(<span>$i</span> = <span>0</span>; <span>$i</span> < <span>$length</span>; <span>$i</span>++) {
        <span>yield</span><span>$i</span> . <span>'Camel'</span>;
    }
}

<span>/*
迭代器
以下的代码会抛出错误:
PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 72 bytes) in /var/www/test/90/yield/demo01.php on line 38
*/</span><span>foreach</span>(iteratorTest(<span>$length</span>) <span>as</span><span>$v2</span>) {
    <span>echo</span><span>$v2</span>;
}
<span><span>function</span><span>iteratorTest</span><span>(<span>$length</span>)</span> {</span><span>$data</span> = [];
    <span>for</span>(<span>$i</span> = <span>0</span>; <span>$i</span> < <span>$length</span>; <span>$i</span>++) {
        <span>$data</span>[] = <span>$i</span> . <span>'Camel'</span>;
    }
    <span>return</span><span>$data</span>;
}</code>
로그인 후 복사

엑셀 표 데이터를 연산하는 등 대용량 데이터를 특정 방법으로 계산하려는 경우 성능에 미치는 영향은 더욱 커진다. 이때 생성기를 사용하면 귀중한 메모리 공간을 차지하지 않고 더 적은 메모리를 사용하지 않고도 후속 값을 즉시 계산하고 생성할 수 있습니다.

').addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

이상으로 php55의 새로운 기능인 Yield Generator에 대한 내용을 소개하였고, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!