先の質問 sscanf のパターン解釈に関して からの派生質問です。
sscanf でパターンに関して下記サンプルの挙動が理解できませんでした。
$a
は、whitespace まで読み取りその後を改めて解釈すると考えると、期待通り[1]に34
が入っています。
$b
を同様に考えると、[1]は4
となりそうですが、実際はNULL
です。
$c
でスペースをパターンとして認識する事を確認したつもりでしたが、$d
で2個めのスペースが認識されず、挙動がよく分からないものになります。
どのような仕組みで動作しているのでしょうか?
よろしくお願いいたします。
php
1$str = '123 34'; 2$n = sscanf($str,'%d%d',$a[0],$a[1]); 3$n = sscanf($str,'%d3%d',$b[0],$b[1]); 4$n = sscanf($str,'%d 3%d',$c[0],$c[1]); 5$n = sscanf($str,'%d 3 %d',$d[0],$d[1]); 6 7$a = array(2) { 8 [0]=> 9 int(123) 10 [1]=> 11 int(34) 12} 13$b = array(2) { 14 [0]=> 15 int(123) 16 [1]=> 17 NULL 18} 19$c = array(2) { 20 [0]=> 21 int(123) 22 [1]=> 23 int(4) 24} 25$d = array(2) { 26 [0]=> 27 int(123) 28 [1]=> 29 int(4) 30}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/25 22:06
2017/08/26 00:06
退会済みユーザー
2017/08/26 07:44