Paizaの値取得・出力方法が分かりにくかったので、簡単に取得できる方法をまとめました。
##Paizaの値取得サンプルコード解説
Paizaを始めた頃は、以下のコードが何を意味しているのかよく分かりませんでした。
<?php
$input_line = trim(fgets(STDIN));
for ($i = 0; $i < $input_line; $i++) {
$s = trim(fgets(STDIN));
$s = str_replace(array("\r\n","\r","\n"), '', $s);
$s = explode(" ", $s);
echo "hello = ".$s[0]." , world = ".$s[1]."\n";
}
?>
コメントアウトしている部分が自分なりの解釈になります
<?php
//最初の行の数値を$input_lineに格納:中身は[2]
$input_line = trim(fgets(STDIN));
//$input_line(2)回処理を行う
for ($i = 0; $i < $input_line; $i++) {
//$sに1行分の値を格納[2 5]
$s = trim(fgets(STDIN));
//$sの余分な改行を削除("\r\n","\r","\n")*3つとも改行を意味する
$s = str_replace(array("\r\n","\r","\n"), '', $s);
//$sを空白区切りで値を再代入 $s[0]->2 $s[1]->5
$s = explode(" ", $s);
echo "hello = ".$s[0]." , world = ".$s[1]."\n";
}
?>
参照元:https://paiza.jp/guide/samplecode
##1文字取得
サンプルコード1行目のように1文字だけ取得したい場合
入力値
1
$input = trim(fgets(STDIN));
echo $input;
出力値
1
##空白区切りで取得
サンプルコード2行目のように空白区切りで1文字づつ取得したい場合
入力値
2 5
<?php
$input = explode(" ", trim(fgets(STDIN)));
echo $input[0]."\n";
echo $input[1]."\n";
?>
出力値
2
5
##連続する文字列を1文字ずつ取得したい場合
str_splitを使い、1文字づつ配列に格納しています。
配列宣言をしなくても、配列になってくれるのがPHPの楽なところですね。
入力値
Paiza
<?php
$input = str_split(trim(fgets(STDIN)));
for($i=0; $i<count($input); $i++){
echo $input[$i]."\n";
}
// $input[0] = P
// $input[1] = a
// $input[2] = i
// $input[3] = z
// $input[4] = a
?>
出力値
P
a
i
z
a
##2次元配列に格納したい場合
複数行+空白区切りの値取得は2次元配列を使用します。
*連続する文字列を1文字づつ取り出したい場合はfor文の中身をexplodeからstr_splitに変更することで対応できます。
入力値
3 5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
<?php
$input = explode(" ",trim(fgets(STDIN)));
$rows = $input[0];
$columns = $input[1];
for($i=0; $i<$rows; $i++){
$array[$i] = explode(" ",trim(fgets(STDIN)));
}
var_dump($array);
?>
情報量が多いので、echoではなく、var_dumpで確認しています。
出力値
array(3) {
[0]=>
array(5) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
[3]=>
string(1) "4"
[4]=>
string(1) "5"
}
[1]=>
array(5) {
[0]=>
string(1) "6"
[1]=>
string(1) "7"
[2]=>
string(1) "8"
[3]=>
string(1) "9"
[4]=>
string(2) "10"
}
[2]=>
array(5) {
[0]=>
string(2) "11"
[1]=>
string(2) "12"
[2]=>
string(2) "13"
[3]=>
string(2) "14"
[4]=>
string(2) "15"
}
}
2次元配列になっているので、少し分かりにくいかもしれません。
どのように値が入っているかというと以下のようになります。
<?php
echo $array[0][0]."\n";//1
echo $array[0][1]."\n";//2
echo $array[0][2]."\n";//3
echo $array[0][3]."\n";//4
echo $array[0][4]."\n";//5
echo $array[1][0]."\n";//6
echo $array[1][1]."\n";//7
echo $array[1][2]."\n";//8
echo $array[1][3]."\n";//9
echo $array[1][4]."\n";//10
echo $array[2][0]."\n";//11
echo $array[2][1]."\n";//12
echo $array[2][2]."\n";//13
echo $array[2][3]."\n";//14
echo $array[2][4]."\n";//15
?>
##まとめ
いかがだったでしょうか。
記事内のコードはPaizaIOで入出力チェックは行っていますが、
おかしいところや疑問点があれば、ご指摘ください。
配列操作ができるようになるとPaizaの学習がグッと楽しくなります。
2次元配列の取得・出力方法がわかった時にBランクに上がることができました。
値取得・出力に悩んでいる方の参考になれば幸いです。