よく、書式で出てくる ○○ ( ○○, ○○ [, ○○ ] ) の [, って何ですか?
PHPを最近はじめました超初心者です。
たとえば、書式の説明で
mb_substr( '文字列', 取り出す範囲の開始位置 [, 文字数 ] );
↑このようなものとかありますが、
[, ってミスですか?
mb_substr( '文字列', 取り出す範囲の開始位置 , [ 文字数 ] );
↑こうではないのですか?
[ と , が入れ替わっているのは
何か意味があるのでしょうか?
No.1ベストアンサー
- 回答日時:
たぶん、リファレンスマニュアルを見ての事でしょうけども。
[ ] 内はあってもなくてもいいって意味
[] そのものは実際の記述とは関係ないです。
mb_substr( '文字列', 1);
でも動くし
mb_substr( '文字列', 1 , 2);
でも動く。
後半の , 2 を省略してもいいですよ。って意味で
[] でくくっているため
[ , int]
みたいな感じになっとります。
上記の意味を踏まえて考えると
mb_substr( '文字列', 取り出す範囲の開始位置 , [ 文字数 ] );
コレの場合、[]内を省略すると
mb_substr( '文字列', 1 , );
になってしまいます。
これでは構文エラーになります。
No.4
- 回答日時:
[...] は、BNF記法(バッカス・ナウア記法)という記述方法です。
ルールとしては、
・省略可能なアイテムは角括弧で囲む。例えば、 [, data] など。
・0回以上繰り返すアイテムは中括弧で囲む。例えば、 <単語> ::= <文字> { <文字> }
・1回以上繰り返すアイテムには '+' を後ろに追記する。たとえば <数字>+
・0回以上繰り返しを '*' を後置することで表すこともあります。
・選択肢は '|' 記号で区切ります。例えば、 <alternative-a> | <alternative-b>
また、アイテムをグループ化する必要があるときは、普通の丸括弧で囲みます。
・ここでは<>で括られているのは単語、とか、整数といった文法の因子やかたまりを表します。
説明書などでは、<>で括らない方が分かりやすいこともあってラフな書き方として定着しています。
などがあります。『構文解析理論』という小難しい学問に基づいた記述方法なのですが、コンピュータではよく出てきます。
基本的には終端記号(文脈の終わりと言う意味ではありません。それ以上分解できない最後の単位という意味です。たとえば、アルファベットとか数字が終端記号です)をボールド体、非終端記号を通常の文字で表し、イタリック体(斜めになっている文字)や山括弧を使いません。
そこで、
mb_substr( '文字列', 取り出す範囲の開始位置 [, 文字数 ] );
ですが、間違いではありません。
[]内は省略できると言う意味なので、
mb_substr( '文字列', 取り出す範囲の開始位置 , 文字数 );
または
mb_substr( '文字列', 取り出す範囲の開始位置 );
のどちらか、という意味です。
No.3
- 回答日時:
関数の説明のおける [ ] は「その部分は省略できます」という意味です。
省略した場合は関数ごとに適当な処理が行われます。例えば 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 …
No.2
- 回答日時:
書式について解説しているページを見るのが確実ですが……
# ちなみに私はPHPは未経験。
「省略可能」な引数の説明ではないかと。
>mb_substr( '文字列', 取り出す範囲の開始位置 [, 文字数 ] );
ならば、
mb_substr( '文字列', 取り出す範囲の開始位置, 文字数 );
でも
mb_substr( '文字列', 取り出す範囲の開始位置 );
でもよい。ということかと。
>mb_substr( '文字列', 取り出す範囲の開始位置 , [ 文字数 ] );
で[]内が省略可能だと、
mb_substr( '文字列', 取り出す範囲の開始位置, 文字数 );
は問題ありませんが、
mb_substr( '文字列', 取り出す範囲の開始位置, );
では意味不明になりますよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlについての質問 2 2022/10/17 15:25
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) MID関数について 2 2022/04/22 09:13
- 数学 数学の証明問題について質問です。 今日私大入試があったのですが、AとBの共通部分となるxの範囲を求め 1 2023/02/10 15:27
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/02/18 11:30
- PHP substrの使い方について教えて下さい。 4 2023/02/17 15:59
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IMAP関数で取得した文字列の、...
-
メールのCCに複数のアドレスを...
-
RSSを取得すると文字化けする。
-
multipart/form-dataの文字化け
-
PHPmailerでの添付ファイルの文...
-
UTF8メールがLotus Notesで文字...
-
セッションが文字化け、エンコ...
-
CGIを作っています。渡されて来...
-
文字化け変換方法
-
Gmailへのメール送信で文字化け
-
Warning: mb_strpos(): Unknown...
-
includeファイルの文字コードに...
-
SQL Serverで文字コードUTF-8
-
SJISで取得した半角カナをUTF-8...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
phpのメールフォームの完了画面...
-
SQL Serverで文字コードUTF-8
-
PHPmailerでの添付ファイルの文...
-
SJISで取得した半角カナをUTF-8...
-
mb_convert_encoding で 一部の...
-
PHP cURLでPOSTした値が文字化...
-
SJIS→UTF-8変換後の文字化けに...
-
mb_ereg_replaceに関して
-
【PHP】mb_convert_encoding...
-
phpMyAdmin内での文字化け
-
mb_regex_encodingでエンコード...
-
PostgreSQLからCSV形式でエクス...
-
RSSを取得すると文字化けする。
-
postの文字化け防止について
-
UTF8メールがLotus Notesで文字...
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
phpでの文字エンコード
-
php自動返信メール本文の一部の...
-
mail()で送信したメールのタイ...
おすすめ情報