PHP 文字列　echoでの①カンマとドットの違い　②`と”の違い 改行 Webフォント

#**文字列**
##**①echoの際の文字列連結のカンマとドットの違い**
出力するデータ量が十分に小さいことが確定しているとき
→ どちらかと言えば「.」を使うべき

出力するデータ量が不明，また大きいことが確定しているとき
→ 「,」を使うべき

文字列の連結コストは，データが大きいときには無視できませんが，小さいときには入出力のコストよりも小さくなる。ただ小さいときにはどちらも気にするほどではないので，好ぶこと。
[参考ページ](http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13166336143)

<font color="#FF8C00">echo $a .$b;</font>
の場合は$aと$bを結合した文字列を作ってから出力する
文字列を、作って[ガベージコレクション](http://www1.bbiq.jp/takeharu/java61.html)の対象になるほうが負荷が高い

<font color="#FF8C00">echo $a, $b;</font>

は$aと$bを連続して出力する

[参考ページ](http://qiita.com/trashtoy/items/5c76f3cd8cb636ac3c72)
##**""と”の違い**

**<font color="#FF9900">■シングルクォーテーション(')</font>**
この方法は連結処理はされず、ただ並べて表示させてるだけなので、処理としては一番速くなる。
目的によって使い分けますが、特に理由がなければ、,（カンマ）で並べて表示させる方がいい。

**<font color="#FF9900">■ダブルクォーテーション(")</font>**
ダブルクォーテーション(")は文字列内に記述した変数の値を展開する。

```php:例１↓
　$i = 'test';
　print 'これは$i';
結果　これは$i
```

```php:例２↓
　$i = 'test';
　print "これは$i";
結果　これはtest
```



```php:■例
$i = 'test';
echo "ここは$i";
echo 'ここは' . $i;
echo "ここは" . $i;
echo 'ここは$i';
```

```:■実行結果
ここはtest
ここはtest
ここはtest
ここは$i 
```

[文字列結合(,)と(.)の違いについて(参考になるサイト)](http://qiita.com/trashtoy/items/5c76f3cd8cb636ac3c72)

##**改行**
■方法①

```php
echo "\n";
```
■方法②

```php
echo '<br>';
```

■方法③
PHP_EOLを使う

```php:
<?php
 print("the first line");
 print(nl2br(PHP_EOL));
 print("second line");
 ?>
```

##**webフォント**

[uploading-0](...)
かわいい文字にしたいときわwebフォント<font color="#FF00CC">&hearts;</span>

```php:cssにこちらを追加
@font-face {
font-family: あずきフォント;
src: url(azuki.ttf) format("truetype");
}
```

①azuki.ttfをダウンロード
②azuki.ttfをプロジェクトに追加
③azuki.ttfをサーバーにも追加

```php:使いたいところに指定
textarea {
	width: 480px;
	font-family: "あずきフォント";
}
```

[webフォントで参考になるサイト](http://blog.chiyopen.com/webfont/)
[あずきフォントわここからダウンロード♥](http://azukifont.com/font/azuki.html)
[webフォントで参考になるサイト](http://www.6666666.jp/design/20160218/)

###webフォントをIEでも対応させる

[以前私が質問したページ](https://teratail.com/questions/65905#reply-104292)
[参考になるサイト](http://www.hirok-k.com/blog/751.html)

WOFFコンバーターというフリーソフトをインストールする
[WOFFコンバーター](http://opentype.jp/woffconv.htm)
![woffconverterimage.png](https://qiita-image-store.s3.amazonaws.com/0/95187/baa231d1-ceeb-63fd-18b9-abbbf532ad70.png)
![201702153.png](https://qiita-image-store.s3.amazonaws.com/0/95187/3f470178-88f7-883e-ce3d-6a63f7848e8e.png)

①azuki.ttfからazuki.eotとazuki.woffをWOFFコンバーターというフリーソフトで生成
②azuki.eotとazuki.woffをプロジェクトに追加
![20170217.png](https://qiita-image-store.s3.amazonaws.com/0/95187/dc79301c-24cb-f68c-a5cc-d3dfc94f9254.png)

③azuki.eotとazuki.woffをサーバーにも追加

```css:CSS
@font-face{
    font-family: 'あずきフォント'; /* お好きな名前に */
    src: url('azuki.eot'); /* IE9以上用 */
    src: url('azuki.eot?#iefix') format('embedded-opentype'), /* IE8以前用 */
        url('azuki.woff') format('woff'), /* モダンブラウザ用 */
        url('azuki.ttf') format('truetype'); /* iOS, Android用 */
}
```

##**strval()**
strval — 変数の文字列としての値を取得する

```php:
$MyNumber = 162;
echo strval($MyNumber); //162
var_dump(strval($MyNumber)); //string '162' (length=3)
var_dump($MyNumber); //int 162
```

##**文字列と数値の比較**
文字列と数値を比較する場合は、文字列が数値に比較され、数値として比較されます。その際、比較する値は文字列の先頭部分で決まる。文字列の先頭が有効な数値である場合はその値で比較し、有効な値が先頭にない場合は値が０になる。

```php:例
if("3abc" == 3){
	echo "true";
}else{
	echo "false";
}
if("24abc" >  21){
	echo "A";
}
if ("4member" > 1){
	echo "B";
}
if ("3member" < 1) {
	echo "C";
}
if('5member' < 44){
	echo "44";
}else{
	echo "5member";
}
```

■実行結果
trueAB44

##**strcmp()**
|　　　　　　　　　　| |
|:--|:--|
|**strcmp(引数1,引数2)**|引数1が引数2より大きかったら1を返す。引数1が引数2より小さかったら-1を返す。|

```php
if(strcmp("54321", "6789") > 0){
	echo "Over";
}else{
	echo "Under"; //Underが表示される
}
echo strcmp("5member", 3); // 1
echo strcmp(3, "5member"); // -1
echo strcmp("abc", "hij"); // -1
echo strcmp("k","a"); // 1
echo strcmp(2, "2member"); // -6
echo strcmp("a", "ab"); // -1
echo strcmp("a","a"); //0
```

[何故echo strcmp("a", "ab"); // -1なるの？](https://teratail.com/questions/72190)

##**ヒアドキュメント**
**「ヒアドキュメント」は長い文字列を変数に代入したり、出力する場合に使う**

```php:
$test=<<<A
1</br>
2</br>
3</br>
4
A;

print $test;
```

```php:実行結果
1
2
3
4
```

Aは名前自由

##**<?= ?>**

```php:
<?='hello';?>
```

```php:
hello
```

#**変数**
##**{変数}**

```php
$weather = "晴れ";
echo "今日は{$weather}です";
echo "</br>";
echo '今日は{$weather}です';
```

■実行結果
今日は晴れです
今日は{$weather}です
今日は晴れです

##**{$a->b()}**

```php
class hoge{
  function b(){
    return "c";
  }
}
$a=new hoge;
print "A{$a->b()}B";
```

■実行結果
AcB

###**++$i;と$i++;の違い**
|演算子|概要|例|
|:--|:--|:--|
|++|前置加算(代入後に加算)|$i++|
|++|後置加算(代入前に加算)|++$i|

```php:例①
$var = 2;
echo $var ++; // 2

$i = 5;
echo ++ $i; //6
```

```php:例②
$a = 2;
echo ++$a; //3

$b = 2;
echo $b++; //2
```

##**変数(値による代入)**

```php:
$x = 1;
$y = $x;
$x = 5;
echo $y; //1
```



##**変数(参照による代入)**

参照渡しを使うにはアンパサンド「&」を使う。「&」記号を代入する方の変数の「$」記号の前に付ければいいだけ。

```php:例
$x = 1;
$y = &$x;
$x = 5;
print $y; //5
```

##**変数の有効範囲(スコープ)**
|||
|:--|:--|
|グローバル|関数外|
|ローカル|関数内|

```php:例
$x = 10;
function checkScope() {
	return ++ $x; // 1
}

print checkScope ();
print $x; // 10
```

##**関数内でグローバル変数を利用する**
■方法1
変数名の前に**global**をつけると、
その変数はローカル変数ではなくグローバル変数として扱われる

```php:
$x = 10;
function checkScope() {
	global $x;
	return ++ $x; // 1
}

print checkScope (); // 11
print $x; // 11
```

■方法2
**$GLOBALS配列**
$GLOBALSは、グローバル変数名がキーの連想配列なので、グローバル変数名をキーにして呼び出す。

グローバル変数$varを呼び出すには、グローバル変数名varをキーにし、$GLOBALS[var]で呼び出す。

```php:
$num = 100;
foo();
function foo(){
	print $GLOBALS['num']; // 100
}
```

#**数学**
![20170412.png](https://qiita-image-store.s3.amazonaws.com/0/95187/57c34646-1a25-1f25-9225-f02009e63243.png)
![201704121.png](https://qiita-image-store.s3.amazonaws.com/0/95187/e32e7f5e-1958-18c3-e35c-0969311c1a57.png)