{"id":14563,"date":"2024-03-15T09:30:22","date_gmt":"2024-03-15T09:30:22","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/"},"modified":"2025-08-06T10:25:37","modified_gmt":"2025-08-06T10:25:37","slug":"what-is-the-usage-of-php-yield","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/","title":{"rendered":"PHP Yield: Understanding Generator Functions"},"content":{"rendered":"<p>The yield keyword in PHP is used to define generator functions, which allow for the generation of a series of values during iteration, rather than all values being generated at once.<\/p>\n<p>Functions defined using the yield keyword will return a generator object that implements the iterator interface. Each time the next() method of the generator object is called, the generator function will execute until it reaches a yield statement, and then return the value after yield to the caller. When the next() method is called again, the generator function will continue executing from the last yield statement until it encounters the next yield statement.<\/p>\n<p>The syntax for generator functions is as follows:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">generator_function<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ \u521d\u59cb\u5316\u4ee3\u7801<\/span>\r\n    \r\n    <span class=\"hljs-keyword\">yield<\/span> <span class=\"hljs-variable\">$value1<\/span>;\r\n    <span class=\"hljs-comment\">\/\/ \u5176\u4ed6\u4ee3\u7801<\/span>\r\n    \r\n    <span class=\"hljs-keyword\">yield<\/span> <span class=\"hljs-variable\">$value2<\/span>;\r\n    <span class=\"hljs-comment\">\/\/ \u5176\u4ed6\u4ee3\u7801<\/span>\r\n    \r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable\">$value3<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>Generator objects can be iterated through using a foreach loop. Each time the loop iterates, the next() method of the generator object will be called to retrieve the next value until the generator function is completed.<\/p>\n<p>Using generator functions can save memory, especially when dealing with large amounts of data. This is because generator functions only generate one value at a time, eliminating the need to generate all values at once and reducing memory consumption.<\/p>\n<p>Here is an example of using yield:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">generate_numbers<\/span>(<span class=\"hljs-params\"><span class=\"hljs-variable\">$start<\/span>, <span class=\"hljs-variable\">$end<\/span><\/span>) <\/span>{\r\n    <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-variable\">$i<\/span> = <span class=\"hljs-variable\">$start<\/span>; <span class=\"hljs-variable\">$i<\/span> &lt;= <span class=\"hljs-variable\">$end<\/span>; <span class=\"hljs-variable\">$i<\/span>++) {\r\n        <span class=\"hljs-keyword\">yield<\/span> <span class=\"hljs-variable\">$i<\/span>;\r\n    }\r\n}\r\n\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-title function_ invoke__\">generate_numbers<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">10<\/span>) <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$number<\/span>) {\r\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$number<\/span> . <span class=\"hljs-string\">\" \"<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>The code above will output: 1 2 3 4 5 6 7 8 9 10.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The yield keyword in PHP is used to define generator functions, which allow for the generation of a series of values during iteration, rather than all values being generated at once. Functions defined using the yield keyword will return a generator object that implements the iterator interface. Each time the next() method of the generator [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[19626,529,660,19648,3935],"class_list":["post-14563","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-generator-functions","tag-performance-optimization","tag-php","tag-php-generators","tag-yield-keyword"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP Yield: Understanding Generator Functions - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how PHP yield creates generator functions that produce values during iteration, saving memory and improving performance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP Yield: Understanding Generator Functions\" \/>\n<meta property=\"og:description\" content=\"Learn how PHP yield creates generator functions that produce values during iteration, saving memory and improving performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T09:30:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T10:25:37+00:00\" \/>\n<meta name=\"author\" content=\"Jackson Davis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jackson Davis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/\"},\"author\":{\"name\":\"Jackson Davis\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350\"},\"headline\":\"PHP Yield: Understanding Generator Functions\",\"datePublished\":\"2024-03-15T09:30:22+00:00\",\"dateModified\":\"2025-08-06T10:25:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/\"},\"wordCount\":204,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"generator functions\",\"Performance Optimization\",\"PHP\",\"PHP Generators\",\"yield keyword\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/\",\"name\":\"PHP Yield: Understanding Generator Functions - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T09:30:22+00:00\",\"dateModified\":\"2025-08-06T10:25:37+00:00\",\"description\":\"Learn how PHP yield creates generator functions that produce values during iteration, saving memory and improving performance.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP Yield: Understanding Generator Functions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350\",\"name\":\"Jackson Davis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"caption\":\"Jackson Davis\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP Yield: Understanding Generator Functions - Blog - Silicon Cloud","description":"Learn how PHP yield creates generator functions that produce values during iteration, saving memory and improving performance.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/","og_locale":"en_US","og_type":"article","og_title":"PHP Yield: Understanding Generator Functions","og_description":"Learn how PHP yield creates generator functions that produce values during iteration, saving memory and improving performance.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T09:30:22+00:00","article_modified_time":"2025-08-06T10:25:37+00:00","author":"Jackson Davis","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Jackson Davis","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/"},"author":{"name":"Jackson Davis","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350"},"headline":"PHP Yield: Understanding Generator Functions","datePublished":"2024-03-15T09:30:22+00:00","dateModified":"2025-08-06T10:25:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/"},"wordCount":204,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["generator functions","Performance Optimization","PHP","PHP Generators","yield keyword"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/","name":"PHP Yield: Understanding Generator Functions - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T09:30:22+00:00","dateModified":"2025-08-06T10:25:37+00:00","description":"Learn how PHP yield creates generator functions that produce values during iteration, saving memory and improving performance.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-php-yield\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PHP Yield: Understanding Generator Functions"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350","name":"Jackson Davis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","caption":"Jackson Davis"},"url":"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=14563"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14563\/revisions"}],"predecessor-version":[{"id":158597,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14563\/revisions\/158597"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=14563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=14563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=14563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}