PHPの質問です

入力に
apple 5 4
lemon 4 3
orange 2

というデータがあります
これを
for($i=1;$I<=3;$i++){
list($a,$b,$c)=explode(" ",trim(fgets(STDIN)));
}
とやると 3行目の3列目にデータがないのでエラーが出ます
どのように書けば、3行目の3列目を空白にして配列に取り込めるでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2016/11/12 12:50:11

ベストアンサー

id:tobeoscontinue No.1

回答回数220ベストアンサー獲得回数59

list($a,$b,$c)=explode(" ",trim(fgets(STDIN))." ");
後ろに空白を追加してみてはどうでしょう。

他2件のコメントを見る
id:tobeoscontinue

すいません。チェックしておらず遅くなりました。

> 3行目の3列目にデータがないのでエラーが出ます
ということなので適当なデータを付加して3列目にすればいいわけです。
例えば" X"を付加したものをexplodeします。
apple,lemonでは要素数が4になりますが
list($a,$b,$c)では4番目は無視されるので問題ありません。
 気持ちが悪いならlimitを指定するといいでしょう。
 explode(" ",trim(fgets(STDIN))." ",3);
orangeでは要素数が3になるのでエラーになりませんが
$cには"X"が代入されてしまうので" "にすることで""になります。

2016/11/12 09:35:16
id:Izkgkf0CPUsl85gi0dBq

なるほど、そういうことだったんですね。
ありがとうございます!

2016/11/12 12:48:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません