PHP基礎①

#はじめに
本日よりPHPについて勉強を始めたので、こちらにアウトプットとしてまとめていきます
とりあえず、今日は基本的なところを一気にまとめていきます。

#画面に文字を表示していく

まずはプログラム学習の一歩目、”HelloWorld”を出力していきます

```sample.php
<h1>
<?php
print("HelloWorld");
?>
</h1>
```
 phpではプログラムを記述する際に必ず開始タグと<?php ~~~ ?>終了タグで挟んでやる必要があります。おそらくrailsでいう<%%>に近いイメージかと思います。

#計算結果を表示する

```sample.php
<?php
print(1+1);#2と表示される
print("1+1");#1+1と表示される
?>
```
今回の場合は、文字列の場合と違って計算結果が表示されます。このへんもRailsと同様です。

#時刻を表示する

今回は読み込んだ時点での秒を表示させてみます。

```sample.php
<?php
print(date('s')); #53と表示された→54と表示された
?>
```
これをうまく活用すると以下のように応用できます。
```
<?php
print(date('s秒'));　#23秒と表示される
print(date('i分 s秒'));　#34分23秒と表示される
print(date('G時 i分 s秒'));　#3時34分23秒と表示される
?>
```

ちなみに、この時正しい時刻がでないよという方はタイムゾーンの設定がヨーロッパになっているので東京に変更してあげましょう。(この操作は人によって異なります)
コード側でも設定可能なので見てみます

```
date_default_timezone_set('Asia/Tokyo');
```

#文字列の連結

Rubyの時は、＋を使って、文字列を連結させていましたが、PHPでは　.　を使って連結させます

```sample.php
<?php
print('現在は'.date('G時 i分 s秒') . 'です'); #現在は9時38分25秒です
?>

```
ちなみに、応用として以下のようなこともできます。

```php
<?php
$name="私の名前は"
$name .="山田です"　# $name=$name . "山田です"の省略系
print($name); #私の名前は山田です

?>
```

###オブジェクトを使って、時刻を表示

以下にオブジェクトを使った場合の表示の仕方についてまとめます。

```sample.php
$today = new DateTime();
print($today->format('G時 i分 s秒'));#9時38分25秒
```

この書き方はまさにオブジェクト指向ですね。
DateTimeクラスのインスタンスである$todayを、formatメソッドを使用して時間を表示しているといったかんじですね。

#変数の扱い

変数を使用する時は、$を頭につけて明示的につける必要があります。
もちろん、変数名は英語が好ましいですが、「$わたしの名前」といった変数も一応使えるらしいです。
記号が含まれてたり、数字が先頭にある場合は変数として使えません

```sample.php
<?php
$sum = 100+200;　
print($sum);#300
?>
```

なお、ややこしいですが、PHPの場合、変数を""で囲った時、変数名が表示されるのではなく、変数の中身が表示されます。

#繰り返し処理
365までの数字を出すプログラムを考えます。
このへんはだいたいどん言語でも大体同じですので、コードを記述して終わりとします。
###while構文
```sample.php
<?php
$i=1;
while($i<=365){
 print($i."\n");
 $i =$i + 1;
}
?>
```

###for文

```sample.php
<?php
for($i=1;$i<=365;$i++){
 print($i . "\n");
}
?>
```

ちなみに、この辺の記事が分かりやすかったです。
参考記事:https://qiita.com/rana_kualu/items/0abd2b6f69527b0b4b92


###練習問題（1年後のカレンダーを表示する）

繰り返し構文を使って、一年後までのカレンダーを表示するプログラムを考えてみます
今回は、strtotimeメソッドを使用しています
```caelndar.php
<?php
for($i=0;$i<=365;$i++){
print(date('n/j(D)',strtotime('+'.$i.'day')));
print "\n";
}
?>
```


#配列
配列とdateメソッドを使って曜日を日本語で表示してみます。
このへんもRubyとあまり変わりはないですね
```sample.php
$week_name=['日','月','火','水','木','金','土'];
print($week_name[date('w')]);
```

#連装配列

添字が数字ではなく、　キーにして、取り出すことができる。

```sample.php
$fruits=['apple'=>'りんご',
         'grape'=>'ぶどう',
         'lemon'=>'れもん'
];
print($fruits[apple]);#りんご
```

###配列での繰り返し処理

配列専用の繰り返し処理を行う方法をいかに示す。Rubyでいうところの、each文と同じ。

```sample.php
$fruits=['apple'=>'りんご',
         'grape'=>'ぶどう',
         'lemon'=>'れもん'
];

foreach($fruits as $val){
  print($val . "\n"); #りんご
}

foreach($fruits as $english=>$japanese)
  print($english . ":" . $japanese . "\n"); #apple:りんご
}
```

#if文
これまた、RubyやC言語とほぼ同じでした。

```sanple.php
if(date('G') < 10){
  print("10時以前は営業時間外です");
}else{
  print("いらっしゃいませ");
}
```

このへんは飛ばしちゃいます

#小数の切り上げ、切り下げ

```sample.php
<?php
#3.3333をどう扱うかみていく
(floor(100/3000*100)); #3 切り下げ
(ceil(100/3000*100)); #4 切り上げ
(round(100/3000*100)); #3 四捨五入
?>
```

#書式を揃える

桁数をそろえたりと、書式を指定したい場合はsprintfを使用する
このへんは[公式](https://www.php.net/manual/ja/function.sprintf.php)や[ブログ等](https://techacademy.jp/magazine/12286)に分かりやすく書いてありますのでご覧ください

```sample.php
<?php
$date=sprintf('%04d年 %02d月 %02d日',2021,1,12);
print($date); #2021年01月12日
?>
```

#ファイルに内容を書き込む、読み込み

###書き込み
ファイルに内容を書き込みたい時は、file_out_contentsメソッドを使用します。このメソッドはファイルの書き込みが成功したかどうかtrue,faslseを返してくれます。

```sample.php
<?php
$success=file_out_contents('../news_file.txt','新しい速報です！');  #書き込みが成功したかどうかでtrue,falseを返す
if($success){
　　print("成功");
}else{
　　print("失敗");
}
?>
```

###読み込み
読み込む際には、file_get_contentメソッドを使用します。
また、readfileを使えばいちいち画面に表示するためのプログラムは書かなくても良いというメリットがあります。

```sample.php
$new=file_get_contets("../new_file.txt");
print($new);

#上記のプログラムをまとめたい場合は以下のメソッドを使用すると良い
readfile("../new_file.txt")
```

##XMLの情報を読み込む

XMLの情報を読み込むときは、simplexml_load_file('https://~~~~')を使用する。

```sample.php
<?php
$xmlTree=simple_load_file('https://~~~~~');
foreach($xmlTree->channel->item as $item){

<a href="<?php print($item->link);?>"><?php print ($item->title);?></a>

}

?>
```

#JSONを読み込む
JSONの情報を読み込む時は、すでに上述したfile_get_contentsを使用します。

```sample.php
<?php
$file=file_get_contents('https://~~~');
$json=json_decode($file); #phpでjsonを扱えるようにするため

foreach($json->items as $item):
?>

<a href="<?php print($item->url);?>"><?php print($item->title);?></a>
<?php endforeach;?>
```


#おわりに
ひとまず、ざっくりと基礎的なものをまとめました。
やはり新しい言語を学ぶってめちゃくちゃ楽しいですね。
ひとまず、PHPでなにかしらの制作物を作りたいと思うので、爆速で学習を進めていきます！