cvs: phpdoc-ja /language/control-structures goto.xml

From: Date: Fri, 03 Jul 2009 01:16:54 +0000
Subject: cvs: phpdoc-ja /language/control-structures goto.xml
Groups: php.doc.ja 
Request: Send a blank email to doc-ja+get-2495@lists.php.net to get a copy of this message
takagi Fri Jul 3 01:16:54 2009 UTC Modified files: /phpdoc-ja/language/control-structures goto.xml Log: sync with en. http://cvs.php.net/viewvc.cgi/phpdoc-ja/language/control-structures/goto.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-ja/language/control-structures/goto.xml diff -u phpdoc-ja/language/control-structures/goto.xml:1.2 phpdoc-ja/language/control-structures/goto.xml:1.3 --- phpdoc-ja/language/control-structures/goto.xml:1.2 Sun May 24 03:08:35 2009 +++ phpdoc-ja/language/control-structures/goto.xml Fri Jul 3 01:16:53 2009 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.2 Maintainer: takagi Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.5 Maintainer: takagi Status: ready --> <sect1 xml:id="control-structures.goto" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <title><literal>goto</literal></title> @@ -9,6 +9,14 @@ プログラム中の他の命令にジャンプすることができます。 ジャンプ先はラベルとコロンで表し、 <literal>goto</literal> の後にそのラベルを指定します。 + これは、完全に制約のない <literal>goto</literal> というわけではありません。 + 対象となるラベルは同じファイル上の同じコンテキストになければなりません。 + つまり、関数やメソッドの外に飛び出したり + 関数やメソッドの中に突入したりすることはできないということです。 + また、いかなるループや switch 構造の中にも突入することができません。 + 逆にループや switch 構造から抜け出すことはできます。一般的な用法としては、 + <literal>goto</literal> を複数レベルの + <literal>break</literal> として使うものがあります。 </para> <para> <example> @@ -32,18 +40,69 @@ </screen> </example> </para> + <para> + <example> + <title>ループでの <literal>goto</literal> の例</title> + <programlisting role="php"> +<![CDATA[ +<?php +for($i=0,$j=50; $i<100; $i++) { + while($j--) { + if($j==17) goto end; + } +} +echo "i = $i"; +end: +echo 'j hit 17'; +?> +]]> + </programlisting> + &example.outputs; + <screen> +<![CDATA[ +j hit 17 +]]> + </screen> + </example> + </para> + <para> + <example> + <title>これは動作しません</title> + <programlisting role="php"> +<![CDATA[ +<?php +goto loop; +for($i=0,$j=50; $i<100; $i++) { + while($j--) { + loop: + } +} +echo "$i = $i"; +?> +]]> + </programlisting> + &example.outputs; + <screen> +<![CDATA[ +Fatal error: 'goto' into loop or switch statement is disallowed in +script on line 2 +]]> + </screen> + </example> + </para> <note> <para> <literal>goto</literal> 演算子は PHP 5.3 以降で使用可能です。 </para> </note> - <warning> - <para> - ループや switch 文の内部にジャンプすることはできません。 - そのような場合は致命的なエラーが発行されます。 - </para> - </warning> - + <para> + <mediaobject> + <imageobject> + <imagedata fileref="en/language/figures/xkcd-goto.png" format="PNG"/> + </imageobject> + </mediaobject> + この画像は <link xlink:href="&url.xkcd;292">xkcd</link> から提供いただいたものです。 + </para> </sect1> <!-- Keep this comment at the end of the file

« previous php.doc.ja (#2495) next »