svn: /phpdoc/bg/trunk/language/control-structures/ foreach.xml

[email protected] (Stanislav Yordanov) Sat, 25 Jun 2016 21:25:52 +0000
Newsgroups php.doc.bg
Message-ID <[email protected]>
stanprog                                 Sat, 25 Jun 2016 21:25:52 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=339497

Log:
sync with EN

Changed paths:
    U   phpdoc/bg/trunk/language/control-structures/foreach.xml

Modified: phpdoc/bg/trunk/language/control-structures/foreach.xml
===================================================================
--- phpdoc/bg/trunk/language/control-structures/foreach.xml	2016-06-25 21:16:12 UTC (rev 339496)
+++ phpdoc/bg/trunk/language/control-structures/foreach.xml	2016-06-25 21:25:52 UTC (rev 339497)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 337339 Maintainer: stanprog Status: ready -->
+<!-- EN-Revision: 339330 Maintainer: stanprog Status: ready -->
 <!-- Reviewed: yes Maintainer: stanprog -->
 <!-- CREDITS: kouber -->
 <sect1 xml:id="control-structures.foreach" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -75,13 +75,49 @@
    </programlisting>
   </informalexample>
  </para>
- <para>
-  Обръщането към <literal>$value</literal> по референция е възможно само ако масива
-  е референцируем (т.е. ако е променлива). Кодът по-долу няма да работи:
+ <warning>
+  <para>
+   Референцията между <literal>$value</literal> и последния елемент от масива
+   остава дори и след приключването на цикъла <literal>foreach</literal>. Препоръчително
+   е да я унищожите посредством <function>unset</function>.
+   В противен случай, ще се натъкнете на следното поведение:
+  </para>
   <informalexample>
    <programlisting role="php">
 <![CDATA[
 <?php
+$arr = array(1, 2, 3, 4);
+foreach ($arr as &$value) {
+    $value = $value * 2;
+}
+// $arr is now array(2, 4, 6, 8)
+
+// without an unset($value), $value is still a reference to the last item: $arr[3]
+
+foreach ($arr as $key => $value) {
+    // $arr[3] will be updated with each value from $arr...
+    echo "{$key} => {$value} ";
+    print_r($arr);
+}
+// ...until ultimately the second-to-last value is copied onto the last value
+
+// output:
+// 0 => 2 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 2 )
+// 1 => 4 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 4 )
+// 2 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
+// 3 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
+?>
+]]>
+   </programlisting>
+  </informalexample>
+ </warning>
+ <para>
+  Преди PHP 5.5.0 обръщането към <literal>$value</literal> е възможно само, ако итерирания масив може да бъде
+  референциран (т.е. ако е променлива). Следният код работи само от HPP 5.5.0:
+  <informalexample>
+   <programlisting role="php">
+<![CDATA[
+<?php
 foreach (array(1, 2, 3, 4) as &$value) {
     $value = $value * 2;
 }
@@ -90,13 +126,6 @@
    </programlisting>
   </informalexample>
  </para>
- <warning>
-  <para>
-   Референцията между <literal>$value</literal> и последния елемент от масива
-   остава дори и след приключването на цикъла <literal>foreach</literal>. Препоръчително
-   е да я унищожите посредством <function>unset</function>.
-  </para>
- </warning>
  <para>
   <note>
    <para>
@@ -207,20 +236,20 @@
    </programlisting>
   </informalexample>
  </para>
-
+
  <sect2 xml:id="control-structures.foreach.list">
   <title>Разопаковане на вложени масиви с list()</title>
   <?phpdoc print-version-for="foreach.list"?>
-
+
   <para>
    В PHP 5.5 е добавена възможността за обхождане на масиви от масиви и разопаковане на
    вложени масиви в променливи в цикъл с предаване на <function>list</function>
    като стойност.
   </para>
-
+
   <para>
    На пример:
-
+
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -247,12 +276,12 @@
     </screen>
    </informalexample>
   </para>
-
+
   <para>
    Може да предадете по-малко елементи на <function>list</function> от тези,
    които са във вложения масив, при което останалите стойности на масива ще бъдат
    игнорирани:
-
+
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -278,11 +307,11 @@
     </screen>
    </informalexample>
   </para>
-
+
   <para>
    Ако няма достатъчно елементи за попълването на <function>list</function>,
    ще бъде генерирано съобщение от тип E_NOTICE:
-
+
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -312,6 +341,44 @@
    </informalexample>
   </para>
  </sect2>
+
+ <sect2 role="changelog">
+  &reftitle.changelog;
+  <para>
+   <informaltable>
+    <tgroup cols="2">
+     <thead>
+      <row>
+       <entry>&Version;</entry>
+       <entry>&Description;</entry>
+      </row>
+     </thead>
+     <tbody>
+      <row>
+       <entry>7.0.0</entry>
+       <entry>
+        Цикълът <literal>foreach</literal> вече не използва вътрешният указател на масива.
+       </entry>
+      </row>
+      <row>
+       <entry>5.5.0</entry>
+       <entry>
+        Референцирането на <literal>$value</literal> за изрази се поддържа.
+        Преди се поддържаха само променливи.
+       </entry>
+      </row>
+      <row>
+       <entry>5.5.0</entry>
+       <entry>
+        Поддържа се разпакетиране на вложени масиви чрез <function>list</function>.
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </informaltable>
+  </para>
+ </sect2>
+
 </sect1>

 <!-- Keep this comment at the end of the file