PHP(基礎文法)に関する自分用メモ
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 '失敗しました。';
}
- 現在の時刻を表示
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秒') . ' です。';
-
リファレンスで=nullが書いてあれば、それは省略できるということ。あと引数のところで?と書いてあったら、それも省略できるということ。
-
PHPだけのファイルであれば、終了タグはつけないこと。
-
文字列連結には" . "ドットをつける。
-
リファレンスで"..."とあったときは、何個でもいいですよ、という意味。
-
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++;
}
- for文
for ($i = 1; $i <= 100; $i = $i + 1):
echo $i . '<br>';
endfor;
for ($i = 1; $i <= 100; $i = $i++){ {
echo $i . '<br>';
}
-
ダブルクォーテーションで文字列を囲んだ場合、中の変数を{}で囲むと変数に置き換わる。シングルクォーテーションの場合はされない。
-
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";
}
- if文
真偽値がfalseになる場合
文字列: 空、"0"
数値: 0、 0.0
論理値: false
配列: 要素の数が0、null
// if (
if ($i == true) {
echo "hello";
}
三項演算子
-
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