😺

PHP(基礎文法)に関する自分用メモ

2023/01/12に公開

XMLの読み込み

$xmlTree = simplexml_load_file('rss.xml');
echo $xmlTree->channel->link;

<channel>
   <link>
↑のように、タグ形式でchannelがプロパティ、linkが値みたいなかんじでアクセスできる。

ファイルの読み込み・追記

$news = file_get_contents('data/news.txt');
echo $news;  //画面にテキストの内容が表示される。

$news = $news . "<br>追加のニュースです";
$success = file_put_contents('data/news.txt', $news);  //これでnews.txtの中に追記ができる。

readfile('data/news.txt');  //いちいち↑のように変数に代入しなくても表示される。

ー------------------------
デフォルト値の引数は、呼び出しの時の引数で上書きされる!

function makecoffee($type = "cappuccino")
{
    return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");

【出力】
Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.

ファイルの書き込み

$success = file_put_contents('data/news.txt', 'こんにちは');  //newsというファイルが作成される。

if ($succes !== false) {
  echo '成功しました。';
} else {
  echo '失敗しました。';
}
  1. 現在の時刻を表示
date_default_timezone_set('Asia/Tokyo');
echo date('G時 i分 s秒');

$today = new DateTime();
$today->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo '現在は ' . $today->format('G時 i分 s秒') . ' です。';

https://www.php.net/manual/ja/datetime.format.php

  1. リファレンスで=nullが書いてあれば、それは省略できるということ。あと引数のところで?と書いてあったら、それも省略できるということ。

  2. PHPだけのファイルであれば、終了タグはつけないこと。

  3. 文字列連結には" . "ドットをつける。

  4. リファレンスで"..."とあったときは、何個でもいいですよ、という意味。

  5. while文
    endwhileには「戻る」という特性がある。

$i = 1;
while ($i < 101):
	echo $i . '個<br>';
	$i = $i + 1;
endwhile

「{」を「:」、「}」を「endforeach(while の場合だったら endwhile )」で代替することも可能。→コロン構文

$i = 2;
while ($i <= 100) {
	echo $i;
	$i++;
	}
  1. for文
for ($i = 1; $i <= 100; $i = $i + 1):
		echo $i . '<br>';
endfor;

for ($i = 1; $i <= 100; $i = $i++){ {
		echo $i . '<br>';
}
  1. ダブルクォーテーションで文字列を囲んだ場合、中の変数を{}で囲むと変数に置き換わる。シングルクォーテーションの場合はされない。

  2. foreach文

$sales = [
  "cola" => 200,
  "milk" => 300,
  "soda" => 150,
  ];

  foreach ($sales as $key => $value) {  //『$key =>』の部分が省略できる。
    echo "($key) $value";
  }

  $colors = ["red", "blue", "yellow"];

  foreach ($colors as $value) {
    echo "$value";
  }
  1. if文

真偽値がfalseになる場合
文字列: 空、"0"
数値: 0、 0.0
論理値: false
配列: 要素の数が0、null

// if (i) { もしiが空文字じゃなかったら
if ($i == true) {
echo "hello";
}

三項演算子

  1. sprintf
    sprintf(フォーマットを定義する文字列, 入力したい文字1, 入力したい文字2, ・・・)
$format = "%sだと%sが%sます。";
$aaaa = '毎日(日)曜日';
$bbbb  = '僕';
$cccc = '喜び';
$message = sprintf($format, $aaaa, $bbbb, $cccc);
echo $message;

【出力結果】
毎日(日)曜日だと僕が喜びます。

%で始まるのが変換指定子というらしい。
%の次に1、2という数字を指定すると順番を指定することができる。

$format = "%1\$sが%2\$sで%4\$sが%3\$sです。";
$aaa  = '君';
$bbb = '私';
$ccc = '俺';
$ddd = 'あなた';

$message = sprintf($format, $aaa, $bbb, $ccc, $ddd);

【出力結果】
君が私であなたが俺です。

%d 10進数
%u 符号無し10進数
%o 符号無し8進数
%x 符号無し16進数
%X 符号無し16進数(大文字表記)
%e 指数形式の浮動小数点
%E %eと同じ(大文字表記)
%f 固定小数点形式の浮動小数点
%g %eまたは%fと同じ
%G %eまたは%fと同じ(大文字表記)
%b 符号無し2進数
%c 指定した文字コードに対応した文字
%s 文字列
%p 値のポインタ
%n 文字数を指定した変数に格納
%% %の文字そのもの(\と同様の使い方)

$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);

【出力結果】
"There are 5 monkeys in the tree"

%0(桁数)d と指定すると、左側に0を埋めてくれる。

$format = “あなたの学籍番号は、 %05d です。 \n";
print(sprintf($format, 1));
print(sprintf($format, 1234));

【出力結果】
あなたの学籍番号は、 00001 です。
あなたの学籍番号は、 01234 です。

Discussion