dポイントプレゼントキャンペーン実施中!

よく、書式で出てくる ○○ ( ○○, ○○ [, ○○ ] ) の [, って何ですか?

PHPを最近はじめました超初心者です。

たとえば、書式の説明で

mb_substr( '文字列', 取り出す範囲の開始位置 [, 文字数 ] );

↑このようなものとかありますが、

 [, ってミスですか?

mb_substr( '文字列', 取り出す範囲の開始位置 , [ 文字数 ] );

↑こうではないのですか?

[ と , が入れ替わっているのは
何か意味があるのでしょうか?

A 回答 (4件)

たぶん、リファレンスマニュアルを見ての事でしょうけども。


[ ] 内はあってもなくてもいいって意味

[] そのものは実際の記述とは関係ないです。

mb_substr( '文字列', 1);
でも動くし
mb_substr( '文字列', 1 , 2);
でも動く。

後半の , 2 を省略してもいいですよ。って意味で
[] でくくっているため
[ , int]
みたいな感じになっとります。

上記の意味を踏まえて考えると
mb_substr( '文字列', 取り出す範囲の開始位置 , [ 文字数 ] );
コレの場合、[]内を省略すると
mb_substr( '文字列', 1 , );
になってしまいます。
これでは構文エラーになります。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
とても分かりやすかったです。
省略可能ってことだったんですね。
やっと理解できました☆

お礼日時:2010/03/08 11:09

[...] は、BNF記法(バッカス・ナウア記法)という記述方法です。



ルールとしては、

・省略可能なアイテムは角括弧で囲む。例えば、 [, data] など。
・0回以上繰り返すアイテムは中括弧で囲む。例えば、 <単語> ::= <文字> { <文字> }
・1回以上繰り返すアイテムには '+' を後ろに追記する。たとえば <数字>+
・0回以上繰り返しを '*' を後置することで表すこともあります。
・選択肢は '|' 記号で区切ります。例えば、 <alternative-a> | <alternative-b>
 また、アイテムをグループ化する必要があるときは、普通の丸括弧で囲みます。
・ここでは<>で括られているのは単語、とか、整数といった文法の因子やかたまりを表します。
 説明書などでは、<>で括らない方が分かりやすいこともあってラフな書き方として定着しています。

などがあります。『構文解析理論』という小難しい学問に基づいた記述方法なのですが、コンピュータではよく出てきます。

基本的には終端記号(文脈の終わりと言う意味ではありません。それ以上分解できない最後の単位という意味です。たとえば、アルファベットとか数字が終端記号です)をボールド体、非終端記号を通常の文字で表し、イタリック体(斜めになっている文字)や山括弧を使いません。

そこで、

  mb_substr( '文字列', 取り出す範囲の開始位置 [, 文字数 ] );

ですが、間違いではありません。
[]内は省略できると言う意味なので、

  mb_substr( '文字列', 取り出す範囲の開始位置 , 文字数 );
または
  mb_substr( '文字列', 取り出す範囲の開始位置 );

のどちらか、という意味です。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
詳しい説明大変勉強になります☆

お礼日時:2010/03/08 11:08

関数の説明のおける [ ] は「その部分は省略できます」という意味です。

省略した場合は関数ごとに適当な処理が行われます。

例えば mb_substr 関数の場合は文字数を省略すると開始位置から最後までの文字列が得られます。

mb_substr( 'この質問に回答します', 2 , 5 );
 結果:質問に回答

mb_substr( 'この質問に回答します', 2 );
 結果:質問に回答します

また、[ ] の内部に「,」が含まれているのは「,」も同時に省略する必要があるからです。

※「,」を省略しなかった場合

mb_substr( 'この質問に回答します', 2 , );
 結果:(エラーになります)




なお、自分で定義した関数でこのような省略可能な引数を設定したい場合は以下のように引数名の指定の際に定数を代入することで設定可能になります。

function makecoffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}


詳しくは下記のページをご参照ください。

関数の引数:デフォルト引数値
http://jp2.php.net/manual/ja/functions.arguments …
    • good
    • 0
この回答へのお礼

ありがとうございます!!
とても分かりやすかったです。
省略可能ってことだったんですね。
やっと理解できました☆

お礼日時:2010/03/08 11:07

書式について解説しているページを見るのが確実ですが……


# ちなみに私はPHPは未経験。

「省略可能」な引数の説明ではないかと。

>mb_substr( '文字列', 取り出す範囲の開始位置 [, 文字数 ] );

ならば、
mb_substr( '文字列', 取り出す範囲の開始位置, 文字数 );
でも
mb_substr( '文字列', 取り出す範囲の開始位置 );
でもよい。ということかと。

>mb_substr( '文字列', 取り出す範囲の開始位置 , [ 文字数 ] );
で[]内が省略可能だと、

mb_substr( '文字列', 取り出す範囲の開始位置, 文字数 );
は問題ありませんが、
mb_substr( '文字列', 取り出す範囲の開始位置, );
では意味不明になりますよね?
    • good
    • 0
この回答へのお礼

ありがとうございます!!
とても分かりやすかったです。
省略可能ってことだったんですね。
やっと理解できました☆

お礼日時:2010/03/08 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!