php の strtok に関するいくつかの質問
次のコードを参照してください
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><?php
$string = "Hello world. Beautiful day today.";
$token = strtok($string, " ");
while ($token !== false) { echo "$token<br />";
$token = strtok(" ");
} ?>
ログイン後にコピー
ループ終了の条件は $token === false である必要がありますが、strtok は文字列 Type を返します価値があるのに、どうしてこの 2 つが === になるのでしょうか?
'' === false は true ではないことが知られており、これは $token === '' も true ではないことを意味します。では、$token の最終値は何でしょうか?
-----解決策---------
PHP は弱い型指定言語です。この例を見てみましょう
$str='';
$token=strtok($str,'');
var_dump ( $token);
この時に返されるのは bool(false)
見たでしょうか?つまり、これが使われています!==FALSE;
------解決策------------------
通常の状況では、strtok は文字列を返しますが、最後の文字列が見つかると文字列は消えます。このときの戻り値は文字列または NULL ではなく、この関数を作成した人によって規定されています。