Warning: "continue" targeting switch is equivalent to "break". 『Search Replace DB』でエラーが出た時の対処方法

WordPressの豆知識

こんにちは、チーフクリエイターのSHOJIです。

今回は久しぶりに、WorPressに関する知人からの相談ネタなんですが、これまた興味深かったので2回に渡ってご紹介させていただきます。

どちらの相談も『Search Replace DB』を利用する際に発生したエラーに関するものなんですが、今回ご紹介するのは、

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /●●●/wp/Search-Replace-DB-master/srdb.class.php on line 861

といったエラーが表示された場合の対処法です。

Warning: "continue" targeting switch is equivalent to "break". 『Search Replace DB』でエラーが出た時の対処方法

それまでは正常にDB内のURLを置換することが出来ていたようですが、ある時から突然上記のようなエラー表示が出てしまい、作業が進まなくなったとのこと。

この記事をご覧になられている方は知人と同様、Search Replace DBを利用中で同じエラーが発生しているものと思われますので、Search Replace DBについての説明は省略させていただき、早速対象方法をご紹介させていただきますね。

エラーが出た時の対処方法

ずばり「最新のSearch Replace DBをダウンロードして利用しましょう!」これだけです。

簡単な事のようで、実はすぐに思いつかない対処方法だったりもします。

事項でもう少し詳しく原因をお伝えしますが、PHP7.3へのバージョンアップに由来するエラーなので、2019年初め頃から同様の紹介記事が多く存在しているのですが、ほとんどの対象方法として、
・原因箇所を記述変更する
・phpのバージョンを下げる
・他のツールを利用する
といったものが多く、どれも簡単には対処できないといった方もおられるんじゃないでしょうか。

ただし、2018年末にバージョンアップされたPHP7.3由来であるため、現在ではSearch Replace DBとしてもこの点をきちんと修正してあり、最新のバージョン『Search Replace DB - v4.1.3』ではこの警告は表示されなくなっています。

問題なく利用できてればそのまま使い続けてしまいがちですが、このようなツールやプラグイン、テーマなどは出来る限り最新版を利用するよう心がけましょう。

Search Replace DBの最新版は、開発者公式のGitHubよりダウンロードが出来ますが、不明な点があれば下記の過去記事においてダウンロード方法を紹介していますので参考にしてみてください。

『Search-Replace-DB-4.1.1をアップロードして表示されない時の落とし穴』
https://info-con.co.jp/tips/wordpress-08-search_replace_db/

interconnectit/Search-Replace-DBGitHub:interconnectit/Search-Replace-DB
 

PHP7.3からbreakの代わりにcontinueを使うとWarningになる

ここからは余談ですので、興味ある方だけ読み進めてくださいね。

PHP7.3から、forループ内のswitch文においてcase文の最後に「break」でなく「continue」を記述した場合に表示されるようになったことが、今回のエラー表示に繋がっています。

エラー表示された方はおそらく、利用していたSearch Replace DBが、PHP7.3にバージョンアップされる以前にリリースされたものを今でも利用していたんじゃないかと考えられます。

また知人から「Did you mean to use "continue 2"?」ってどういう意味?って聞かれましたが、これは単なる「"continue 2"を指定するつもりでしたか?」と逆に尋ねられているだけです。

注意: PHP では、continue の動作に関しては switch 文がループ構造とみなされます。 continue に引数を渡さなかった場合の動きは break と同じですが、間違いの元なので警告が生成されます。 switch がループ内にある場合、 continue 2 とすると、外側のループの次回の処理から続行します。
参照:PHP公式リファレンス

case文では、「case」の後に記述された値と比較する値が一致した場合にcase文以下の処理が実行され、case文の最後に「break」があった場合にswitch文の処理を終了します。

この時に、「break」と同じ動きをする「引数を渡さないcontinue」の指定に警告が出されるようになったため、forループ内のswitch文において「continue」を使用したい場合は「continue 2」と指定することで、外側のループの次回の処理から続行されるようになるということです。

・・・ね、分かるようで分かりにくいですよね。

やはり、知識の足りない中でむやみやたらにファイルの記述を変更するのは大変危険だと思いますので、今回は最新版をダウンロードしてお使いいただくことをおススメします!

Warning: "continue" targeting switch is equivalent to "break". 『Search Replace DB』でエラーが出た時の対処方法Search Replace DB - v4.1.3
 

最後に

Warning: "continue" targeting switch is equivalent to "break". 「Search Replace DB」でエラーが出た時の対処方法』と題してご紹介した今回のWordPressの豆知識いかがでしたか?

はじめにも書きましたが、2回に渡ってご紹介する次回も『Search Replace DB』、しかも最新版におけるエラー表示への対処方法をお届けする予定ですので、興味ある方はぜひ次回のWordPressの豆知識もチェックしてみてください!

Webの豆知識」の関連記事

インフォコネクトに
相談してみませんか?

経営コンサルティングやITサービス活用支援、ホームページ制作などに関するご依頼や、ご質問・ご相談など、なんでもお気軽にお問い合わせください。