PHP 5.5.29 にてコマンドラインから下記のスクリプトを実行しました。
■ソース(vsprintf.php)
<?php $format = '%$1s'; $args = array( 'test' ); echo vsprintf( $format, $args ); ?>
■実行結果
[kiya@test ~]$ php vsprintf.php PHP Warning: vsprintf(): Argument number must be greater than zero in /var/www/mainecoon/bat/vsprintf.php on line 4 PHP Stack trace: PHP 1. {main}() /var/www/mainecoon/bat/vsprintf.php:0 PHP 2. vsprintf() /var/www/mainecoon/bat/vsprintf.php:4
vsprintf()の引数は0個より多くないとダメだよと言っているようです???
引数は $format, $args と2つ指定しているので「なに!?」となるわけですが、このエラーは $format の書式が間違っているのが原因です…え~~~。
$format で指定している '%$1s' は '%1$s' の間違いでおかしな所に$が現れたのでエラーになったんです。
そう、これエラーメッセージが間違っているんです><;
う~ん、実際には可変引数を受け取ってメッセージを合成して出力する関数でこのエラーに遭遇しまして、$formatの書式ははなから疑っていなかったため、結構な時間悩んでしまいました…
0 件のコメント:
コメントを投稿