[PHP]strpos()関数で、Empty needle in... のPHP Warningが出力される条件

カテゴリ: PHP

PHPでstrpos()関数を実行したとき、下記の警告が表示される場合があります。

PHP Warning:  strpos(): Empty needle in...

これは、strpos()の第二引数が、空文字列のときに発生します。

Warning出力の再現コード

<?php
$data = 'abracadabra';

$pos = strpos($data, 'bra');    // これは大丈夫(エラーにならない)
echo $pos . PHP_EOL;            // 1

$pos = strpos($data, '');       // エラーが発生: PHP Warning:  strpos(): Empty needle in...
echo $pos . PHP_EOL;

Warningが出力されそうで、実は出力されないパターン

以下のコードは一見するとWarningが出そうですが、Warningは表示されません。
ダメなのは、空文字列の時だけのようです。

<?php
$data = 'abracadabra';
$pos = strpos($data, null);    // エラーにならない
var_dump($pos);                 // bool(false)

$pos = strpos($data, false);    // エラーにならない
var_dump($pos);                 // bool(false)

$pos = strpos($data, 0);        // エラーにならない
var_dump($pos);                 // bool(false)

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ
カテゴリ: PHP

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です