
PHPで、3問ほど質問です。
問1
PHPでプログラムを作成していて、思った結果が出てこないので、変数やら配列やらの
中身を表示させつつ、原因らしきものを突き止めました。
substr関数 です。
手元のプチリファレンスには、
substr(元の文字列,抽出開始位置,抽出する文字数)
のようなことが書いてあるのですが、
抽出開始位置 ではなく、抽出を開始したい手前の位置 ではないのかと思いました。
というのも、
echo substr("abc",0,1); は、a が表示されますし、
echo substr("abc",3,1); は、何も表示されないからです。
というわけで、
substr(元の文字列,抽出を開始したい手前の位置,抽出する文字数)
でいいのでしょうか?
○文字目から数えて、△文字分としたときにずれて表示されるので、ヘンだな~と
思っているのですが…。
問2
DOSプロンプト経由で、PEARをインストールしてみました。
(自分のパソコンです。XAMPPを使用しています)
最終的にinstall ok と表示されましたが、Warnning というメッセージがちらほらと。
大丈夫なんでしょうか? ただ、PEARの機能は使えましたが…。
問3
値を送る・返す関数ではなく、PHPで、サブルーチンというか、VBやVBAでいえば、Call文で
呼んでくるような、文の書き方を教えてください。
sub_keisan();
function sub_keisan(){
}
のような引数なしの関数の書き方でいいのでしょうか?
No.2ベストアンサー
- 回答日時:
問1
プログラム上では、『文字列とは文字型データの配列である』という、プログラマとしての常識を前提として書かれているという事ですね。その、"手元のプチリファレンス"には。
(※正確には言語によっては『文字列とは文字列型のクラスである』という場合もあるので、厳密には正しくないが、概ね先の常識を踏襲していると言っていい)
一文字目は、配列インデックスで言えば0(番目)の文字。
問2
>Warnning というメッセージがちらほらと
せっかくインストーラが出しているWarnningを読まずに、無視して何がしたいのでしょう?
使いたい機能が使えてるなら、それでいいんじゃないですか?
それでイヤなら、ちゃんと読めばいいだけの話です。
問3
VBAに言語構造として、サブルーチンなどありません。
サブルーチンとは考え方、または実装の仕方の話です。
VBAでの
Sub sub_keisan(){
}
のような、書き方はサブプロシージャです。決してサブルーチンなどではありません。(サブルーチンとして実装したなら、サブルーチンではあるんでしょうが)
VBAでは、値を返すプロシージャはFunction、値を返さないプロシージャはSubと別々に実装しているだけです。
PHPはすべて、どちらもFunctionで記述します。(引数を受け取る受け取らない、値を返す返さないはFunction記述者が自由に設計すればいいだけです。
了解しました。0番目の文字が、最初になるわけですね。
警告内容を書かないとわかりませんよね。失礼しました。
どちらもFunctionで通じることを確認しました。てっきり別々のものがあるものと思っていました。
No.4
- 回答日時:
1.
文字列の先頭を1文字目と数えるのは、現在メジャーな言語ではVB系くらい。他の言語は先頭は0文字目です。
配列のインデクスの始まりと合わせてるのでしょうね。Cだと文字列型は存在せず、文字の配列しか無いので、その影響だと思います。
2.
警告の内容次第ですが、エラーで無いので大丈夫では?
「警告が出たのですが大丈夫?」と聞かれても答えようが無いです。
3.
VBのCallでも引数ありますよね。
引数なしのPHP functionはもちろんOKです。
>VBやVBAでいえば、Call文で呼んでくるような、
の言わんととするところが不明です。引数を括弧で囲まないという意味なら出来ません。
配列と同じく、先頭は0から開始で納得しました。
警告内容については、これじゃ分かりませんね。失礼しました。特に、影響らしい影響はないみたいです。
引数なしの functionでうまくいきました。
ご回答ありがとうございました。
No.3
- 回答日時:
>抽出開始位置 ではなく、抽出を開始したい手前の位置 ではないのかと思いました。
http://jp2.php.net/manual/ja/function.substr.php
>start が正の場合、返される文字列は、 string の 0 から数えて start番目から始まる文字列となります。 例えば、文字列'abcdef'において位置 0にある文字は、'a'であり、 位置2には'c'があります。
何故公式リファレンスを読まない?
>手元のプチリファレンスには、
それにしても最近の糞プログラマは公式リファレンスすら読めないのか?
2.
その肝心の中身を書かないでわかるかよ。
俺たちは君のPCを透視できる超能力者か?
3.
そんな物必要ない。
それとすべての行を一行開けにするな。読みづらい。
公式リファレンスにしっかり書かれていました。「位置 0にある文字は、'a'であり…」
さすがに警告内容を書かないとわかりませんね。
失礼しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Perl perlについての質問 2 2022/10/17 15:25
- PHP substrの使い方について教えて下さい。 4 2023/02/17 15:59
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Excel(エクセル) MID関数について 2 2022/04/22 09:13
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Objective-C
-
postgresql関数をつかったレコ...
-
配列をループでたくさん宣言し...
-
演算子について
-
file_existsでファイル名の部分...
-
プルダウンメニューでCSVデータ...
-
while文について
-
PHPの基礎知識でお伺いします
-
下記の問題を「関数使わず」にP...
-
クッキーに配列2
-
連想配列のprint_rやvar_dump出...
-
PHPでcsv内のデータをカテゴリ...
-
3次元配列を2次元配列にする方...
-
mysql_fetch_arrayでレコードが...
-
検索方法
-
日付から順にデータを並び替えたい
-
if文などで使用される条件式で...
-
DBを使用しないで条件にマッチ...
-
PHPのアクセスカウンターのバグ...
-
MYSQLとPHPによって取得する多...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$_SESSIONに二次元配列を使える...
-
file_existsでファイル名の部分...
-
String だと「 ByRef引数の型が...
-
foreachのなかで次のキーを参照...
-
配列をループでたくさん宣言し...
-
PHPにてクラスを配列にすること...
-
ネストが深い時のforeachはどう...
-
PHPのカッコ[ ]の使い方について
-
PHP掲示板で新着順に表示させた...
-
while文について
-
$_POSTを一括してサニタイズし...
-
mb_ereg_replaceについて
-
チェックボックス複数選択 mys...
-
配列を回すとき、最後の要素だ...
-
postgresql関数をつかったレコ...
-
チェックボックスが複数選択で...
-
URLのサブドメインとドメイン部...
-
○番目から○番目までの取り出し...
-
ファイルから指定行数分だけ読...
-
重複しないランダム関数を教え...
おすすめ情報