【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】 さいころゲームを作ってみた
今日からPHPを勉強しはじめ、基礎文法を学んだので早速ゲームのようなものを作ってみました。
ものすっごく簡単なものではありますが、Web制作以外では初めての自作物です(^^♪
〈PHPプログラムの内容〉
・さいころの目を表す変数を2つ用意
・2つの変数に、mt_randを用いて1~6からランダムに数字を代入
・2つの合計が10になるかどうかを判定
・結果を表示
その前にPHPのローカル開発環境の構築も初めて行いました。
〈ブラウザでPHPの動作を確認できるようにする手順〉
・XMAPPをダウンロードする
・XMAPPを起動し、ApacheとMySQLを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>
<title>サイコロ</title>
</head>
<body>
<h1>サイコロ</h1>
<h4>足して10になるとラッキー☆</h2>
<p>
<br>足して10になりました!おめでとう★
</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で作ったサイト:ユーザーにより違う内容が配信される(動的サイト)
PHPの書き方
ファイルの拡張子は .php とする。
〈解説〉
・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 ( );を用いると、条件を満たしていなくても一度は表示される。
配列
<?php
//定義
//$配列名 = [値1, 値2, 値3...]; //インデックスは0から始まる
//例
$scores = [10, 30, 50];
echo $scores[1]; → 30と出力
$scores[1] = 70; //値を変更できる
echo $scores[1]; → 70と出力
foreach
配列の全ての要素に対して処理を実行する
構文
foreach (配列名 as 変数名) {
処理...
}
変数名は任意で付けられる。
配列から値をひとつずつ取り出し、変数に代入してから、処理を実行する。
例