PHP勉強1日目まとめ

燐華

ノートにまとめたものをこちらにも書いていくスタイル

改行の仕方

<?php
echo "{変数名}\n";
?>

PHP8?ではこうするらしい。変数は{}で囲む。


Paizaでの標準入力

練習問題を解くために利用した、Paizaの標準入力についてメモ書き。

1単語だけの場合

<?php
trim(fgets(STDIN));
?>
  • trim:文字列の先頭・末尾にあるホワイトスペース(改行・空白)を取る
  • fgets:ファイルポインタから1行取得する
    • ファイルポインタ:サーバーが使用するファイルを扱うための専用しおり→現在のファイルをどこまで読み書きしたか示す
  • STDUIN:Paizaの標準入力オブジェクト(モノ)

複数行にまたがるとき(2行目~を取りたい!)

<?php
$a = trim(fgets(STDIN));
$b = trim(fgets(STDIN));
$c = trim(fgets(STDIN));
echo "{$a}\n";
echo "{$b}\n";
echo "{$c}\n";
?>

上記もできるけど、必要な分だけたくさん取得しないといけない。→コードが長くなる!

<?php
$input_line = trim(fgets(STDIN)); //1行目(個数)を取得
for($i = 0; $i < $input_line; $i++){
  $a = trim(fgets(STDIN)); //2行目から1行ずつ指定された回数分ループ
  echo "{$a}\n"; //取得したものを出力
}
?>
燐華

1行目に個数が書いてない場合は?

データ行が不明な場合、whileを使うと最後まで全部読み込んでくれる。

<?php
while($line = fgets(STDIN)){
  $a = trim($line); //N個数分繰り返す
  echo "読み込んだ行:{$a}\n"; //取得したものを出力
}
?>

前後に半角スペースがあるとき

<?php
//入力文字:A B C 
$array = explode(" ", trim(fgets(STDIN)));
echo $array[0]; //配列array[A,B,C]から取る。
?>
  • explode():””に入っている文字で入力文字を区切る。

入力文字が少数の場合

直接変数に入れちゃうことも可能◎

<?php
//入力文字:A B C
list($a, $b, $c) = explode(" ", trim(fgets(STDIN)));
echo "{$a}\n"; //出力:A
echo "{$b}\n"; //出力:B
echo "{$c}\n"; //出力:C
?>
  • list関数:配列と同じ形式で複数の変数へ代入。空の式(null)は×
    list($var, $var…)

  • X