【PHP】 ビルトイン関数  基礎

ビルトイン関数とは
 
あらかじめPHPに組み込まれている関数のこと。
 
 
例えばこんなもの
・文字列を渡すと、文字列の長さを返す
strlen ( 'apple' )  →5
 
・大きな数値を渡すと、3桁ごとにカンマを入れる
number_format ( 12345678 )  →1,235,678
 
・配列を渡すと、実行するたびシャッフルする
shuffle ( [1,2,3,4] )  →[2,4,3,1]
 
・配列を渡すと、重複した要素を取り除く
array_unique ( [2,2,5,7,7, )  →[2,5,7]
 
 
sprintf ( ) , printf ( )
sprintf:フォーマットされた文字列を返す(出力するにはechoが必要)
printf:フォーマットされた文字列を(返すだけでなく)出力する
<?php
$num = 5;
$location = 'table';
$format = 'There are %d apples in the %s';
echo sprintf($format, $num, $location);
//printf($format, $num, $location); //同じ内容が出力される
?>  → There are 5 apples in the table と出力
値を埋め込む箇所にデータ型に応じた記号を書く。
文字列:%s  整数:%d  浮動小数点数:%f
 
 
strlen ( ) , trim ( ) , strpos ( ) , str_replace ( )
 
<?php
$input = ' abc_napi ';
$input = trim($input);  
  → $inputの前後の空白や改行を除去
 
echo strlen($input);  → 8と出力 
  → $inputの文字数を出力
 
echo strpos($input, '_');  → 3と出力
  →$inputの中から'_'を探し、何文字目にあるかを出力
※位置は0から始まることに注意
 
$input = str_replace('_', '-', $input);  
  → '_'を'-'に変える
echo $input;  → abc-napiと出力
 
mb_strlen( ) , mb_strops( )
日本語を扱う際は、以下のように別の関数を使う。
strlen ( ) → mb_strlen( )
strpos ( ) → mb_strops( )
 
 
情報の桁数が決まっている固定長データ
substr( )
<?php
$input = '20210223food-A 12000';
$date = substr($input, 0, 8); //$inputの0文字目から8桁分
$food = substr($input, 8, 6); //$inputの8文字目から6桁分
$amount = substr($input, 14);
//最後までの場合は、何桁分という引数を省略できる
echo $date;  → 20210223と出力
echo $food;  → food-Aと出力
echo number_format($amount);  → 12,000と出力
 
substr_replace( )
<?php
$input = '20210223food-A 12000';
$input = substr_replace($input, 'food-B', 8, 6);  
  → $inputの8文字目から6桁分をfood-Bに置き換える
 
 
特定のパターンの文字列を検索・置き換え
preg_match( ), preg_match_all( )
<?php
 
$tel = 'Call us at 06-1111-2222 or 06-3333-4444';
$type = '/\d{2}-\d{4}-\d{4}/';
 
preg_match($type, $tel, $matches);  → 最初に見つかった結果を出力
preg_match_all($type, $tel, $matches);  → 見つかった全ての結果を出力
// (検索したいパターン, 検索したい文字列, 検索結果を格納する変数)を引数とする 
 
preg_replace( )
<?php
$tel = 'Call us at 06-1111-2222 or 06-3333-4444';
$type = '/\d{2}-\d{4}-\d{4}/';
 
$tel = preg_replace($type, '**-****-****', $tel);
// (パターン, 置き換え後の文字列, 検索したい文字列)
 
echo $tel;  → Call us at **-****-**** or **-****-****と出力
 
 
配列を連結する
implode( )
<?php
$today = [2021, 2, 24];
 
echo "$today[0]-$today[1]-$today[2]";
echo implode('-', $today);
// (区切り文字, 配列名)
 
→ どちらも2021-2-24と出力
 
 
文字列を配列の要素にする
explode( )
<?php
$time = '21:40:15';
print_r (explode(':', $time));
// (区切り文字, 配列名)
 
→ Array ( [0] => 21 [1] => 40 [2] => 15 )と出力
 
 
数学系の関数
<?php
 
$n = 1.2435;
 
echo ceil($n);  →2 //小数点以下を切り上げ
echo floor($n); →1 //小数点以下を切り下げ
echo round($n); →1 //小数点以下を四捨五入
echo round($n, 2); →1.24 //小数点以下が2桁になるよう四捨五入
 
<?php
echo mt_rand(1,9); //1以上6以下の乱数を生成
echo max(1, 5, 8); → 8と出力
echo min(1, 5, 8); → 1と出力
 

【PHP】 さいころゲームを作ってみた

今日からPHPを勉強しはじめ、基礎文法を学んだので早速ゲームのようなものを作ってみました。

ものすっごく簡単なものではありますが、Web制作以外では初めての自作物です(^^♪

 

PHPプログラムの内容〉

さいころの目を表す変数を2つ用意

・2つの変数に、mt_randを用いて1~6からランダムに数字を代入

・2つの合計が10になるかどうかを判定

・結果を表示

 

その前にPHPのローカル開発環境の構築も初めて行いました。

〈ブラウザでPHPの動作を確認できるようにする手順〉

・XMAPPをダウンロードする

・XMAPPを起動し、ApacheMySQLをStartさせる

・Cドライブ > xmapp > htdocs というフォルダ内に、PHPファイルを作成する

・ブラウザで確認する際は「http://localhost/ファイル名」と指定してアクセスする

 

 

<?php

$dice1 = mt_rand(1,6);
$dice2 = mt_rand(1,6);
$sum = ($dice1 + $dice2 == 10) ? true : false;

?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>サイコロ</title>
</head>
<body>
    <h1>サイコロ</h1>
    <h4>足して10になるとラッキー☆</h2>
    <p>
      <br>サイコロの目は「<?php echo $dice1;?>」「<?php echo $dice2;?>」でした!
      <?php if ($sum): ?>
      <br>足して10になりました!おめでとう★
      <?php endif; ?>
    </p>
    <p><a href="">もう一度!</a></p>
</body>
</html>

【PHP】 関数の基礎

関数の基本構文
 
変数:ひとつの値や文字列などのデータを使いまわす
関数:もっと大きな範囲、処理をひとまとめにして使いまわす
 
定義・出力方法
function 関数名( 仮引数 ){
処理
}
 
関数名();
 
<?php
function outputName($last_name, $first_name){
echo “私の名前は” . $last_name . $first_name . “です。
”;
}
outputName(“北川”, ”景子”);
outputName(“アン”, ”ハサウェイ”);
?>
 
→ 私の名前は北川景子です。
私の名前はアンハサウェイです。 と出力
 
 
returnで値を返す
①returnを使わない場合
<?php
function sum($a, $b, $c){
echo $a + $b + $c ;
}
 
sum(100, 200, 300);  → 600と出力
sum(300, 400, 500);  → 1200と出力
 
②returnを使う場合
<?php
function sum($a, $b, $c){
return $a + $b + $c;
echo 'Hi';
}
echo sum(100, 200, 300) + sum(300, 400, 500);  → 1800と出力
※関数内でreturnを使うとそれ以降の処理は実行されない。
 よって上の例では、 Hi は出力されない。
 
 
無名関数
関数自体を値として使い、変数に代入することができる。
<?php
$sum = function ($a, $b, $c) {   // 関数名がないので無名関数と呼ぶ
return $a + $b + $c;
};
echo $sum(100, 200, 300);  → 600と出力
普通の関数は最後に ; は不要だが、値として代入する場合は ; が必要。
無名関数にすることで、関数を別の関数の引数に渡すことができる。
 
 
if ... else ... を短く書くことができる条件演算子
①if…else…を使う場合
<?php
function sum($a, $b, $c){
$total = $a + $b + $c;
if($total < 0){
return0;
} else {
return $total;
}
}
echo sum(1,3,5);  → 9と出力
echo sum(-1, -3, 2);  → -2と出力
 
②条件演算子を使う場合
return 条件 ? trueの時の返り値 : falseの時の返り値; 
<?php
function sum($a, $b, $c){
$total = $a + $b + $c;
return $total < 0 ? 0 : $total;  //この部分
}
echo sum(1,3,5);
echo sum(-1, -3, 2);

【PHP】 基礎文法

PHPとは
 
HTML/CSSで作ったサイト:いつ誰が見ても同じサイト(静的サイト)
PHPで作ったサイト:ユーザーにより違う内容が配信される(動的サイト)
 
SNSやショッピングサイトといった高度なWebサービスを作るには、動的サイトを作る必要がある。
 
 
PHPの書き方
 
開始タグ <?php  と 終了タグ ?> の間にPHPを記述する。
ファイルの拡張子は .php とする。
PHPのファイルにはHTMLも書けるが、PHPのコードしか書かない場合は終了タグは書かない。
 
<?php
echo 'Hello hinako' .PHP_EOL ;
echo "Hi hinako" ;
〈解説〉
・echo:出力する
・文字列は"~"もしくは'~'で囲う。
・.PHP_EOLを付けると、環境に応じて適切に改行をしてくれる。
 
 
変数
$変数名 = '文字列' / 数字 ;
※値を変数に割り当てることを「代入」という。
 
変数を使うメリット
→変更に強くなる。値を変更する際、変数を定義している箇所のみ変更すればよい。
 
 
条件分岐
①if文
<?php
$signal = 'blue';
if ($signal === 'red') {
echo 'Stop!';
} elseif ($signal === 'yellow') {
echo 'Caution!';
} elseif ($signal === 'blue'){
echo 'Go!';
}
 
→ GO! と表示される。
 
②switch文
if文で書いたものをswitchで書き替えることができる。
<?php
$signal = 'blue';
switch ($signal) {
case 'red':
echo 'Stop';
break;
case 'yellow':
echo 'Caution!';
break;
case 'blue':
 case 'green':
echo 'Go!';
break;
}
if文でelse ifが続く場合は、switch文の方が適している。
switch文では
 case 'blue':
 case 'green':
というように複数のcaseを指定することができる。
 
 
ループ処理
①for文
繰り返す回数が決まっている場合に用いる。
<?php
for ($i = 1; $i <= 10; $i++) {
echo "$i - Hello" . PHP_EOL;
}
 
→ 1 - Hello
~ 10 - Hello
まで繰り返し表示される。
 
②while文
ある条件が満たされている間、特定の処理を繰り返す場合に用いる。
<?php
$hp = 100;
while ($hp > 0){
echo "Your HP: $hp" .PHP_EOL;
$hp -= 15;
}
 
→ Your HP: 100
 ~Your Hp: 10
までHPが15ずつ減り、繰り返し表示される。
※$hp -= 15; のような条件に関する処理を書き忘れると無限ループになってしまう。
 
※最初から条件を満たしていない場合は、何も処理されない。
do { } while ( );を用いると、条件を満たしていなくても一度は表示される。
do{
echo "Your HP: $hp" . PHP_EOL;
$hp -= 15;
} while ($hp > 0);
 
 
配列
<?php
 
//定義
//$配列名 = [値1, 値2, 値3...]; //インデックスは0から始まる
 
//例
$scores = [10, 30, 50];
 
echo $scores[1];  → 30と出力
 
$scores[1] = 70;  //値を変更できる
echo $scores[1];  → 70と出力
 
 
foreach
配列の全ての要素に対して処理を実行する
構文
 
foreach (配列名 as 変数名) {
処理...
}
 
変数名は任意で付けられる。
配列から値をひとつずつ取り出し、変数に代入してから、処理を実行する。
 
<?php
 
$scores = [10, 20, 30];
foreach ($scores as $score){
echo $score;  
}  
 
→ 10 20 30と出力