0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP にちょっと触れてみたので書いとく

Posted at

Ruby を少し齧った人間が PHP に触れてみたので後で見返すように書きました。

php タグ

PHP のコードは<?php?>の中に書く

<?php
$name = "伊藤";
print($name);
?>

HTMLに埋め込むのではなく、独立したファイルに PHP のコードを保存する場合は末尾の ?> は省略することができる。終端の ?> の後に改行文字などがあると予期せぬ不具合の元になる為、省略することを推奨されている。

<?php
$name = "伊藤";
print($name);

文の区切り文字

文の末尾には;が必要

$name = "神山"
// ; が抜けているのでダメ

文字列の連結

"Hello " . "world";
// "Hello world"

変数の宣言

// 変数は先頭に`$`が必要
$message = "hello";

出力

Rubyの puts などのように引数の文字列を出力する

var_dump($message);
// var_dump は型などが表示されるのでデバッグ用に使う
echo "hello";
print "world";

入力

// Ruby の gets のように標準入力から文字列を受け取る
print("入力してください");
$input = fgets(STDIN);
print($input);
// Ruby の gets 同様に改行文字が含まれる。 trim 関数を使って前後の空白文字を除去する
print("入力してください");
$input = trim(fgets(STDIN));
print($input);

PHPのbool値

PHPマニュアルよりの引用です。

boolean に変換する場合、次の値は FALSE とみなされます。
boolean の FALSE
integer の 0 および -0 (ゼロ)
float の 0.0 および -0.0 (ゼロ)
空の文字列、 および文字列の "0"
要素の数がゼロである 配列
特別な値 NULL (値がセットされていない変数を含む)
空のタグから作成された SimpleXML オブジェクト

上記以外は TRUE と見なされます。

条件分岐

if 文は条件式の()を省略できない。また PHP の条件分岐は if なので、Ruby のように代入文の右側に置くとエラーになる

if ($age >= 20) {
  print("成人です");
}else {
  print("未成年です");
}

//HTMLに埋め込む
<?php if($age >= 20): ?>
  <div>成人です</div>
<?php else: ?>
  <div>未成年です</div>
<?php endif; ?>

配列

//宣言
$week1 = ["月", "火", "水"];
$week2 = ["木", "金", "土"];
// 要素の型は揃っていなくても良い
$any_type = ["なんでもいいよ", 100, 1.14, true];

//末尾の要素を取り出す
$wday1 = array_pop($week1);
//"水"

//先頭の要素を取り出す
$wday2 = array_shift($week2);
//"木"

//配列の末尾に要素を追加する
array_push($week1, $wday1);
//["月", "火", "水"]
array_push($week1, $wday2);
//["月", "火", "水", "木"]

//複数の配列をつなぎ合わせる
$week = array_merge($week1, $week2);
// ["月", "火", "水", "木", "金", "土"]

//配列の要素を逆順にした配列を返す
array_reverse($week);
// ["土", "金", "木", "水", "火", "月"]

range関数

// range(開始値, 終了値)
range(0, 5)
// [0, 1, 2, 3, 4, 5] の配列を返す
// Ruby の 1..5 のようなもの?

foreach 文

配列から要素を先頭から一つづつ取り出し、ブロック内の処理を適用する。Ruby の foreach メソッドとほぼ同じ。

$week = ["月", "火", "水", "木", "金", "土"];
foreach ($week as $day) {
  print("今日は" . $day . "曜日\n");
}

while 文

条件式の( )は省略不可

$money = 30000;

while($money >= 0) {
  print("あと" . $money . "円\n");
  $money -= 3300;
}

for 文

for($money = 30000; $money >= 0; $money -= 3300){
  print("あと" . $money . "円\n");
}

関数の定義

function 関数名(引数) {
  関数の処理本体
  return 返り値
}
//関数定義
function addNum ($x, $y) {
  return($x + $y);
}

//関数呼び出し
print(addNum(2,4));
//6

ヒアドキュメント

変数 <<< EOM
複数行の
文章を
書く
EOM;

function createMessage($name, $price) {
  $msg = <<< EOM
{$name}ご注文を承りました
ご注文の代金は合計{$price}円です\n
EOM;
  echo $msg;
}

createMessage("伊藤", 300000);
createMessage("高崎", 3000);
//string(89) "伊藤様、ご注文を承りました。
//ご注文の代金は合計300000円です。"

//string(87) "高崎様、ご注文を承りました。
//ご注文の代金は合計3000円です。"

連想配列

Ruby の hash のようにキーと値の組でデータを保持する
連想配列の宣言 {``} ではなく [``] で括ることに注意

$member = ["name" => "伊藤", "nickname" => "テストマスター"];
$member["name"];
// ”伊藤”
$member["point"];
// 80

//入れ子にもできる
$members = [
  ["name" => "伊藤", "nickname" => "テストマスター"],
  ["name" => "高崎", "nickname" => "スクラムマスター"]
];
$members[1]["name"];
// "高崎"

外部ファイルを読み込む

// 読み込まれる側の記述は今まで通り
//sampleFunc.php
function createMessage($name, $price) {
  $msg = <<< EOM
{$name}ご注文を承りました
ご注文の代金は合計{$price}円です\n
EOM;
  echo $msg;
}

function getPrice($cnt) {
  return 500 * $cnt;
}

// 読み込む側は宣言が必要
require_once __DIR__ ."/sampleFunc.php";

$orders = [
  ["name" => "伊藤", "cnt" => 300000],
  ["name" => "高崎", "cnt" => 300],
  ["name" => "神山", "cnt" => 200],
  ["name" => "服部", "cnt" =>180]
];

// 外部ファイル内の関数 getPrice(), createMessage() を呼び出している
foreach($orders as $order) {
  $price = getPrice($order["cnt"]);
  createMessage($order["name"], $price);
}
// 伊藤様、ご注文を承りました。
// ご注文の代金は合計150000000円です。
// 高崎様、ご注文を承りました。
// ご注文の代金は合計150000円です。
// 神山様、ご注文を承りました。
// ご注文の代金は合計100000円です。
// 服部様、ご注文を承りました。
// ご注文の代金は合計90000円です。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?