重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

変数はよく箱と言われますがその中に入る状態で疑問が出てきました。

$a=1;

だと、空の箱に 1 が入ったイメージがわきますが・・・

$b="あ";

だと、空の箱に "あ" が入ったことになるのでしょうか?
もしくは、空の箱に あ が入ったことになるのでしょうか?

続いて・・・

$b="あ";
print "$b";

の場合 "あ" の " はどの段階ではずれているのでしょうか?

ご教示よろしくお願い致します。

A 回答 (3件)

> $b="あ";


> だと、空の箱に "あ" が入ったことになるのでしょうか?
> もしくは、空の箱に あ が入ったことになるのでしょうか?

あ が入った事になります。

> $b="あ";
> print "$b";
> の場合 "あ" の " はどの段階ではずれているのでしょうか?

まず、$b = "あ"; で $b の中に あ が入りますよね。
で、printに関してですが、以下は同じ処理になります。

print $b;
print "$b";

通常、変数または数値以外をprintする場合はシングルクオート ' か
ダブルクオート " でくくります。

シングルクオートとダブルクオートの違いは変数を展開するかどうか
という事になります。

$str = 'Hello!';
print $str; // 「hello!」と表示される
print '$str'; // 「$str」と表示される(※変数が展開されない)
print "$str"; // 「hello!」と表示される
print "$str hoge"; // 「hello! hoge」と表示される
    • good
    • 0

あんまりあーだーこーだ言うときっと余計にこんがらがるでしょう。


なので、シンプルに答えちゃいます。

$b="あ";
だと、空の箱に あ が入ったことになります。

""(ダブルクォーテーション)で囲っているのは、あくまでここは文字列なんですよ、と謳っているだけです。
なので入れたい内容が1という数値の値としても、
数値としての
$b = 1;
文字列としての
$b = "1";
の2パターンが存在するわけです。

$b="あ";
print "$b";
ここでは、文字列を出力せよ、と命令しています。
「"」は先に説明した通りである為、別に「"」を出力しようとしているわけではありません。
「"」を出力する場合、
print "\"$b\"";などと「"」を「\」でエスケープします。
    • good
    • 0

考え方の問題はありますが、文字列の場合実際には


文字列のアドレスが入ります。数値は数値そのもの
が入ります。

>$b="あ";
>print "$b";

"あ"は外れていません。""の中は変数の評価はあり
ません。変数は評価されて始めてその値が得られる
訳です。

print $b;

が正解です。
    • good
    • 0

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