1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-29 01:53:12 +02:00
Files
Louis-Arnaud 8f168909f7 XML schema correction: fix structure in language/, appendices/ and other non-reference files (#470)
- Fix inline tag types (<literal> -> <constant>, <type>, <emphasis>)
- Fix entity references
- Fix indentation and nesting
- Add missing markup elements to match doc-en
2026-04-04 09:58:22 -05:00

185 lines
4.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 7104ee97ced1768a3231588dfc0bc0d7eb1117ad Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="control-structures.for" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>for</title>
<?phpdoc print-version-for="for"?>
<para>
Las bucles <literal>for</literal> son las más complejas en PHP.
Funcionan como las bucles for del lenguaje C(C++).
La sintaxis de las bucles <literal>for</literal> es la siguiente :
<informalexample>
<programlisting>
<![CDATA[
for (expr1; expr2; expr3)
comandos
]]>
</programlisting>
</informalexample>
</para>
<simpara>
La primera expresión (<varname>expr1</varname>) es
evaluada (ejecutada), en cualquier caso al
inicio de la bucle.
</simpara>
<simpara>
Al inicio de cada iteración, la expresión
<varname>expr2</varname> es evaluada.
Si la evaluación es &true;, la bucle
continúa y los comandos son ejecutados. Si
la evaluación es &false;,
la ejecución de la bucle se detiene.
</simpara>
<simpara>
Al final de cada iteración, la expresión
<varname>expr3</varname> es evaluada
(ejecutada).
</simpara>
<simpara>
Las expresiones pueden eventualmente ser
dejadas vacías o pueden contener varias expresiones separadas por comas.
En <varname>expr2</varname>, todas las expresiones separadas por una coma
son evaluadas pero el resultado se obtiene desde la última parte.
Si la expresión <varname>expr2</varname>
es dejada vacía, esto significa que es una bucle infinita
(PHP considera implícitamente que vale &true;,
como en C). Esto no es realmente muy útil, a menos que se desee terminar la bucle con la
instrucción condicional
<link linkend="control-structures.break"><literal>break</literal></link>
en lugar de la expresión <literal>for</literal>.
</simpara>
<para>
Considérese los siguientes ejemplos. Todos muestran los números enteros de
1 a 10 :
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/* ejemplo 1 */
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
/* ejemplo 2 */
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}
/* ejemplo 3 */
$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}
/* ejemplo 4 */
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Por supuesto, el primer ejemplo es el más simple
de todos (o quizás el cuarto), pero también se puede pensar que usar una expresión vacía en una
bucle <literal>for</literal> puede ser útil a veces.
</simpara>
<para>
PHP también soporta la siguiente sintaxis alternativa para las bucles
<literal>for</literal> :
<informalexample>
<programlisting>
<![CDATA[
for (expr1; expr2; expr3):
comandos
...
endfor;
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Muchas personas tienen la costumbre de iterar a través de arrays, como en
el ejemplo a continuación.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/*
* Este es un array con datos que queremos modificar
* a lo largo de la bucle
*/
$people = array(
array('name' => 'Kalle', 'salt' => 856412),
array('name' => 'Pierre', 'salt' => 215863)
);
for($i = 0; $i < count($people); ++$i) {
$people[$i]['salt'] = mt_rand(000000, 999999);
}
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Este código puede ser lento porque debe calcular el tamaño del array en cada
iteración. Dado que el tamaño nunca cambia, puede ser fácilmente optimizado utilizando una variable intermedia para almacenar el tamaño en lugar de
llamar repetidamente a la función <function>count</function> :
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$people = array(
array('name' => 'Kalle', 'salt' => 856412),
array('name' => 'Pierre', 'salt' => 215863)
);
for($i = 0, $size = count($people); $i < $size; ++$i) {
$people[$i]['salt'] = mt_rand(000000, 999999);
}
?>
]]>
</programlisting>
</informalexample>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->