人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP初心者です。以下の事柄についてどなたかご教授よろしくお願いいたします。

<pre>
<?php
$language=array("PHP", "JavaScript", "perl");
$big="";

foreach($language as $lang)
{
$big.=$lang.":";
}

echo $big;
?>
</pre>

上記コードの
$big.=$lang.":";
の.=の意味が分かりません。文字列を連結しているのですが、
なぜ=の前にピリオド演算子を
使う必要があるのでしょうか?
愚問かと思いますが、どうぞよろしくお願い申し上げます。

また
echo $big;

echo $big."?n";
と書くのと同じ結果になりました。どちらの書き方が正しいのでしょうか?
どうぞよろしくお願い申し上げます。

●質問者: gbs01
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:AS BIG echo JavaScript Perl
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● SOBA
●20ポイント

$big .= $lang . ":"; は $big = $big . $lang . ":"; と同等。

$big = $lang . ":"; だと

1回目のループ:$big = "PHP" . ":";

2回目のループ:$big = "JavaScript" . ":";

3回目のループ:$big = "Perl" . ":";

となってしまい、配列内の文字列連結でなくなる。

◎質問者からの返答

あ、なるほどー。良くわかりました。

ありがとうございます。


2 ● pahoo
●30ポイント ベストアンサー

まず最初のご質問ですが、それは「代入演算子」といって、文字列の結合と変数への代入を同時に行うものです。

$big .= $lang . ":";

$big = $big . $lang . ":";

と同じ意味になります。


2番目のご質問ですが

また

echo $big;

echo $big."?n";

と書くのと同じ結果になりました。

これは同じ結果にはなりません。

たまたま echo $big; の後に画面出力命令が無いために、そう見えているだけです。

たとえば

echo $big;

echo $big;

と続けて書いた場合と、

echo $big . "?n";

echo $big . "?n";

と続けて書いた場合とでは、結果が異なるはずです。

改行の必要性に応じて、どちらかを選ぶようにしてください。

◎質問者からの返答

なるほど。代入演算子。+=や-=と同じですよね。

ありがとうございます。

あと

echo $big;

echo $big;

echo $big . "?n";

echo $big . "?n";

との違いも分かりました。

ありがとうございます。


3 ● GoldenDawn
●20ポイント

http://php.benscom.com/manual/ja/language.operators.string.php

やってみれば分かりますが、

$big = $lang.":" ;

ピリオド無しにすると出力結果は

perl:

になります。

$big .= $lang.":" ;

$big = $big . $lang . ":" ;

と同じです。

復号演算子はこれらを完結に記述できるもので、文字列以外なら

$n = 5 ;
$n = $n + 3 ;

// これも結果は同じ
$n = 5 ;
$n += 3 ;

などがあります。


また

echo $big;

echo $big."?n";

と書くのと同じ結果になりました。

同じではありません。

前者の出力は

<pre>
PHP:JavaScript:perl:</pre>

であり、後者は

<pre>
PHP:JavaScript:perl:
</pre>

となります。

どちらが正しいかはどちらの結果を求めるかによります。

◎質問者からの返答

なるほど、ありがとうございます。


4 ● きゃづみぃ
●20ポイント

=の前につく.は その前の変数に連結するという意味になります。

.をのぞいて実行した場合、最後のperlだけになってしまいますが、.をつけることにより

今までの分が 連結されていくのです。

ちなみに.を使わないで記述すると

$big=$big.$lang.":";

となります。

echo $big;

echo $big."?n";

と書くのと同じ結果になりました。

画面上では 同じように見えますが、実は違います。

echo $big;

echo $big;

echo $big."?n";

echo $big."?n";

というように 二行記述して 確認してみてください。

ちゃんと改行コードの分 違いがわかるはずです。

◎質問者からの返答

なるほど、ありがとうございます。

改行コードの違いが分かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ