>백엔드 개발 >PHP 튜토리얼 >PHP 생성기의 기능과 사용법에 대한 자세한 설명

PHP 생성기의 기능과 사용법에 대한 자세한 설명

小云云
小云云원래의
2018-03-19 09:57:541774검색

이 글은 주로 PHP 제너레이터의 기능과 사용법을 소개하고, PHP 제너레이터의 개념과 기능, 사용법, 관련 동작 주의사항을 예시 형태로 분석하여 도움이 되었으면 좋겠습니다.

1. 공식 설명: 생성기는 Iterator 인터페이스를 구현하기 위해 클래스를 정의하는 것에 비해 간단한 객체 반복을 구현하는 더 쉬운 방법을 제공합니다. 생성기를 사용하면 foreach 블록에 코드를 작성하여 메모리에 배열을 만들지 않고도 데이터 집합을 반복할 수 있습니다.

2. 생성기는 한 번만 반환하는 일반 함수와 달리 반복해야 하는 값을 생성하는 데 필요한 만큼 생성할 수 있습니다.

3. 코드 예제:

//未使用生成器
echo &#39;开始内存:&#39;.getMemory().&#39;<br>&#39;;
$nums = range(0,1000000);
echo &#39;结束内存:&#39;.getMemory().&#39;<br>&#39;;
//输出结果
//开始内存:0.23M
//结束内存:130.31
//使用生成器
echo &#39;开始内存:&#39;.getMemory().&#39;<br>&#39;;
$nums = xrange(1000000);
function xrange($total)
{
  for ($i = 0; $i < $total; $i++) {
    yield $i;
  }
}
echo &#39;结束内存:&#39;.getMemory().&#39;<br>&#39;;
//输出结果
//开始内存:0.23M
//结束内存:0.23M

4. 실제 적용 예제


/**
 * 大量数据生成示例
 * @param int $page
 * @param int $limit
 * @return Generator
 */
public function generator($page = 1,$limit = 50000)
{
  while (true) {
    echo "第{$page}次".&#39;generator开始内存:&#39;.$this->getMemory().&#39;<br>&#39;;
    $start = ($page-1) * $limit;
    $sql = "SELECT p.id,p.wh_code,p.goods_sn FROM p_product as p WHERE p.wh_code LIKE &#39;%YB%&#39; OR p.wh_code LIKE &#39;%DZWH%&#39; LIMIT {$start},{$limit} ";
    $resultAll = db()->fetchAll($sql);
    yield $resultAll; //生成器
    if (count($resultAll) != $limit) {
      break;
    }
    echo "第{$page}次".&#39;generator结束内存:&#39;.$this->getMemory().&#39;<br>&#39;;
    $page++;
  }
}
    //测试生成器内存消耗
//    foreach ($this->generator() as $result) {
//      var_dump($result[0]);
//    }

관련 권장 사항:

PHP 생성기 설명 및 간단한 사용법

php 생성기 세부 소개

php 생성기 소개 및 예제

위 내용은 PHP 생성기의 기능과 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.