PaizaのスキルチェックのD問題でよく使う、覚えておいた方がいいかもと個人的に関数をまとめてみました。
Webアプリをローカル環境でしか作れない初学者が書いた備忘録程度のものになりますので、そこまで高度なことは
書いておりません。むしろ基礎的な内容です。
最近始めたよ!みたいな方に少しでも役立てたら幸いです。
##explode
文字列を区切って配列化する関数。
まず、以下のような文字列があったとします。
$input_line = '10 20 30 40';
このままでは、1行の文字列として扱われてしまうので各々の数字を扱うことができません。
そこで活躍するのがexplode
関数です。新しく変数を定義し、第一引数に区切る境目を、第二引数には文字列が定義されている変数を持ってきます。つまり、どこで区切って、どの文字列を分けるのかを明記してあげます。
$input = explode(" ", $input_line);
この場合は、半角スペースで区切り、$input_line
の文字列を区切る。のようになっています。
また、この$input
は配列化されるので上記のコードは以下のコードと同じ意味を持つことになります。
$input = array(10, 20, 30, 40);
当然配列なのでそれぞれの数字にインデックス番号が割りふられ、ここでようやく各々の数字を扱うことができるようになるます。
例
30を扱いたい時
$input[2]
を使えば良い。
paizaのスキルチェックD問題ではこのように、問題で使う値が文字列で与えられることが多く、explode
を知らなければその先に進めないものもあります。
##算術演算子
基礎中の基礎ですが、これも知らないと解けない問題があります。基本的な算術演算子は以下のとおりです。
足し算:$a + $b
引き算:$a - $b
掛け算:$a * $b
割り算:$a / $b
割り算のあまり: $a % $b
足し算、引き算は直感的にわかりますが、掛け算以降はコードを書くようになってから知りました。それくらい普段からあまりなじみのない記号を使い、基本的には他の言語でも変わらないみたいのでこれはマストで覚えるべきものだと思います。
##比較演算子、論理演算子
###比較演算子
比較演算子とは、その名の通りある二つの変数をを比較するための演算子です。
主な演算子は以下のようです。
$a == $b:$aと$bが等しい時にtrue
$a != $b:$aと$bが等しくない時にtrue
$a < $b :$bの方が$aよりも大きい時にtrue
$a > $b :$aの方が$bよりも大きい時にtrue
$a <= $b:$bの方が大きいまたは等しい時にtrue
$a >= $b:$aの方が大きいまたは等しい時にtrue
基本的に比較演算子も他の言語でもあまり変わらないことが多いようです。比較演算子は主にif文の中で使うことが多いです。
###論理演算子
論理演算子も比較演算子と似ていてある二つの変数の関係性について調べる演算子です。
$a && $b:$aかつ$bのどちらの条件を満たしている時にtrue
$a || $b:$aまたは$bのどちらかが条件を満たしている時にtrue
まずはこの二つを覚えておけば少なくともスキルチェックのD問題は解くことができると思います。この論理演算子も比較演算子のようにif文で使うことがほとんどです。
##floor関数
floor関数とは数値の小数部分を切り捨てる関数です。つまり以下のようになります。
echo floor(3.14);
//3と表示される
echo floor(233.1234)
//233と表示される
時々、小数点を切り捨てが必要になってくる問題もあるので覚えておくといいかもしれません。
##substr関数
最後にsubstr関数です。これは文字数を制限する関数です。表示したい文字列を選択しすることができます。主な使い方は以下のようのです。
echo substr(‘abcdef’ ,1,3);
// bcdと表示される
echo substr(‘abcdef’ , 0,4);
//abcdeと表示される
最初の1文字目を0として表示したい区間の最初の文字の番号と最後の文字の番号を指定します。配列のインデックス番号のように一番最初が0であることに注意が必要です。
また、以下のように番号を負の値で指定することもできるみたいです。
echo substr(‘abcdef’ ,-1);
//fと表示される
実際負の数字で指定するよりも、扱う文字が相当長くない限り普通に数えて正の数で指定した方が楽なので実際に使ったことはないです。
以上が僕がpaizaのスキルチェックのD問題を解いていて身につけると便利になると感じた関数たちでした。
拙い記事でしたが、少しでもお役に立てれば幸いです。