🐘

[PHP] PHPの基本をアウトプットのためにまとめた

2024/03/23に公開

繰り返し構文

while

<?php
$i = 1;  //初期化
while ($i < 366): //繰り返し
    echo $i . '日<br>';
    $i = $i + 1; //更新
endwhile;
?>

繰り返し構文→while ()でどこまで繰り返しを行うか条件を出しておく

for

<?php
for ($i=1; $i<366; $i=$i+1):
// for (初期化;繰り返し条件;更新処理)
    echo $i . '<br>';
endfor;
?>

for/while構文はセミコロンじゃなくてコロン!!

インクリメント・デクリメント

$i += 5;
$i = $i + 5;


$i = $i +1;
$i += 1;
$i ++;  //インクリメント

$I = $i-1
$i -= 1;
$i --;  //デクリメント

1年後までの日付を全部出す

for ($i=0; $<366; $i++):
 $time = strtotime('+' . '$i' . 'day');
 //$time = strtotime("+ $i day");
 $day = date('n/j(D)', $time);
 echo $day. '<br>';
endfor;

シングルクォーテーションとダブルクォーテーション

シングルクォーテーションで囲むと変数はそのまま変数名がでてくる→中身をそのまま表示する
ダブルクォーテーション→変数が入っている場合に限り変数を展開して表示する

配列

曜日を日本語で取得したい

<?php
$week_name = ['日','月','火','水','木','金','土'];
echo $week_name[0] . '<br>';



date_default_timezone_set('Asia/Tokyo');
$week = date('w');
echo '今日は、'. "$week_name[$week]" . '曜日です';

?>

連想配列 foreach

<?php
$fruits = ['apple'=> 'りんご',
           'grape'=> 'ぶどう',
           'lemon'=> 'レモン',
           'tomato'=>'トマト'
];
?>
<dl>
    <?php foreach ($fruits as $english => $japanese): ?>
        <dt><?php echo $english; ?></dt>
        <dd><?php echo $japanese; ?></dd>
    <?php endforeach; ?>
</dl>

'apple'=> 'りんご' この場合appleをキーりんごを値という。

foreach
foreach ($fruits as $english => $japanese)
ここでのforeachでの使い方は$fruitsという配列をしていしてasでつなげることができる。繋がったのでfruitsの中のキーを取り出すことができる。キーがなくなったらendforeachで終わり

if構文

<?php
date_default_timezone_set('Asia/Tokyo');
$time = ('G');
?>

<?php if($time < 9): ?>
    <p>営業時間外です</p>
<?php else: ?>
    <p>ようこそ</p>
<?php endif; ?>

$time = ('G');Gと記述することで現在時刻を表示することができる
elseがないときはそのままendifで終わっておっけ

<?php
$s = 'アイウエオ';
if ($s !== ''):
    echo "$s には文字が入っています";
endif;

$s !== ''$sだけでも表現できる
一文字だけとか楽すぎてこっちのほうがいいにきまっとる!!!!

$x = 0;
if ($x === 0):
    echo '$Xは0です';
endif;

$x === 0!$xでも表現できる

小数点 floor/ceil/round

floor

小数点を切り捨てたい時に使える。
floorは床という意味があるけど、ここでは小数点を切り透けて床に合わせるという意味でつかわれている!

<?php echo floor(100 / 3000 * 100); ?>

ceil

小数点を切り上げたい時に使える。
ceilは天井という意味をもつ。

<?php echo ceil(3.33); ?>

round

四捨五入したい時にもちいる

<?php echo round(3.66, 1); ?>

roundはパラメータをもう一つ加えることができ、ここに数字を指定すると小数第何位のところで四捨五入したいかを決めることができる。
1→小数第1位を四捨五入する

書式をととのえる

sprintf

ここでのfはフォーマットという意味。→なのでこの文字列をフォーマット化しますよっていう意味のファンクション

<?php
$date = sprintf('%04d.%02d.%02d', 21,10,5);
echo $date;
?>

%04dこれは四桁表示にしてくれるから、21という数字があるときは0021と表示して四桁にする。四桁以下の時は四桁にして5桁以上の時はそのまま表示する。

リファレンスを確認してみるとsprintf(string $format, mixed ...$values): stringとなっている。
...は数がかわりますよっていう意味→つまりこのフォーマットという一つ目のパラメータで指定した数に酔てによって後ろのパラメーターの数が変わる。

%dここのdはデシマルといって整数という意味を表している。
なので**%dというのは数字として表示してくださいね**といういみなので数字ではないものが来た時は無理やり数字にして表示する。
(ちなみに文字を表示したい時は%sで表示される)
%04dここの04は四桁で表示してくださいねという意味があって足りないところは0で補ってくださいねという意味がある。

<?php
$date = sprintf('%04d年%02d月%02d日', 21,10,5);
echo $date;
?>

'%04d年%02d月%02d日'ココの数字のつなぎの部分(年とか)は自分の表示したいものでOK

ファイルへの記録

ファイルの書き込み/file_put_contents

<?php
$success = file_put_contents('data/news.txt',
    'ホームページをリニューアルしました');

if ($success !== false) {
    echo 'ファイルの書き込みが完了しました';
} else{
    echo'ファイルの書き込みに失敗しました';
}

ファイルへの書き込みが失敗したときにphpからのエラーがくるけどそれだけではなんでエラーなのかわからない。phpからのエラーが出ない時なんでエラーになっているのかがその時の環境によってかわるのでif文をいれてエラー表示されるようにしておく

ファイルの読み込み/file_get_contents/readfile

<?php
$news = file_get_contents('data/news.txt');
echo $news;
?>

変数にいれて出力するver
これを用いる時は、ファイルを読み込んだ後にすぐ出力するのではなく加工して出力するときには変数に入れるverを入れる。

readfile('data/news.txt');

ファイルの追記/file_put_contents

$news = $news . "<br>追加のニュースです";
$success = file_put_contents('data/news.txt', $news);

XMLファイルを読み込む/simplexml_load_file

<?php
$xmlTree = simplexml_load_file('rss.xml');
foreach ($xmlTree->channel->item as $item):
?><a href="<?php echo $item->link; ?>"><?php echo $item->title; ?></a><br>
<?php
endforeach;
?>

foreach ($xmlTree->channel->item as $item):という部分の説明!!!
$xmlTree->channel->itemここはxmlTreeのなかのchannelというタグの中のitemを取得することができる。そして取得したデータが$itemという変数に入れていく。$xmlTree->channel->itemココの部分を配列として繰り返し取り出していってその一件ずつを$itemという所に入れていきますよというやつ

json

jsonは、xmlと同じ感じのデータ形式
データが小さい
jsonのjsはjavascriptのことなのでjavascriptのためのデータ形式だったが、近年は様々な言語で使えるようになっている

<?php
$file = file_get_contents('feed.json');
$json = json_decode($file);

echo $json->items[0]->title;
foreach ($json->items as $item):
?><a href="<?php echo $item->url; ?>"><?php echo $item->title; ?><br>

<?php
endforeach;
?>
説明
<?php
$file = file_get_contents('feed.json');
$json = json_decode($file);
//JSON場合はxmlの様に直接読み込む方法がないのでまずファイルとして内容を読み込んで、jsonとして処理できるようにファンクションを入れる。

echo $json->items[0]->title;
foreach ($json->items as $item):
?><a href="<?php echo $item->url; ?>"><?php echo $item->title; ?><br>

<?php
endforeach;
?>

json_decode(jsonが配列になる)

decodeとはコードを分解するという意味がある。(コード化を解除する)
JSONをphpで扱いやすいように分解するということ

ファイルに書き込む(json ver.)/json_encode

<?php
$json_sample = [
    "title" => "JSONサンプル",
    "items" => [
        "りんご",
        "みかん"
    ]
];

$json = json_encode($json_sample, JSON_UNESCAPED_UNICODE);
echo $json;
file_put_contents('json_sample.json', $json);

?>

JSON_UNESCAPED_UNICODE日本語文字が正しく処理できない環境のために日本語をあえてコード化されている(wordpressとか)からこのオプションを指定することで日本語がそのままみえるデータになっている。

json_encode(配列がjsonになる)

encodeはコード化という意味。

Discussion