<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TheSmiling-Blog &#187; PHP</title>
	<atom:link href="http://nm-blog.sanid.com/category/dev/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://nm-blog.sanid.com</link>
	<description>from everyday life to techi information ... and back!</description>
	<lastBuildDate>Fri, 30 Jul 2010 10:00:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>foreach in PHP kopiert Elemente</title>
		<link>http://nm-blog.sanid.com/2009/03/foreach-in-php-kopiert-elemente/</link>
		<comments>http://nm-blog.sanid.com/2009/03/foreach-in-php-kopiert-elemente/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 08:49:11 +0000</pubDate>
		<dc:creator>TheSmile</dc:creator>
				<category><![CDATA[IT & Development]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://nm-blog.sanid.com/?p=49</guid>
		<description><![CDATA[Ich weiß gar nicht so genau, warum mir das erst jetzt aufgefallen ist &#8230; wahrscheinlich liegt es daran, dass ich foreach-Schleifen in PHP bisher immer nur zum Auslesen verwendet habe. Die foreach-Schleife in PHP 1 2 3 foreach &#40;$myArray as $key =&#62; $value&#41; &#123; // code here &#125; referenziert $value nicht, sondern kopiert die Werte. [...]]]></description>
			<content:encoded><![CDATA[<p>Ich weiß gar nicht so genau, warum mir das erst jetzt aufgefallen ist &#8230; wahrscheinlich liegt es daran, dass ich foreach-Schleifen in PHP bisher immer nur zum Auslesen verwendet habe.</p>
<p>Die foreach-Schleife in PHP</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$myArray</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// code here</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>referenziert <code>$value</code> nicht, sondern kopiert die Werte. Das bedeutet, dass folgender Code keinen Effekt hat:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$myArray</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$value</span> <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;something&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Nach dem Schleifendurchlauf sind die Werte des Arrays genau wie vorher.</p>
<p>Seit PHP 5 kann man dieses &#8220;Problem&#8221; folgendermaßen lösen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$myArray</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #339933;">&amp;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$value</span> <span style="color: #339933;">+=</span> “something”<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Wie in der Doku (<a title="php.net" href="http://de.php.net/manual/de/control-structures.foreach.php" target="_blank">php.net</a>) von PHP beschrieben, wird jetzt der Wert durch das <strong>&amp;</strong>-Zeichen referenziert und nicht mehr kopiert.</p>
<p>Es wird noch darauf hingewiesen, dass man nach dem Schleifendurchlauf mit</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">  <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>die Referenz auflösen sollte, da diese auch nach der Schleife auf das letzte Element des Arrays zeigt.</p>
]]></content:encoded>
			<wfw:commentRss>http://nm-blog.sanid.com/2009/03/foreach-in-php-kopiert-elemente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
