ホームページ >バックエンド開発 >PHPチュートリアル >php foreach/in_array での珍しい問題

php foreach/in_array での珍しい問題

WBOY
WBOYオリジナル
2016-07-29 09:12:371042ブラウズ

PHP は開発効率が高いのは理解できますが、実行効率が犠牲になります。 php の配列関数は非常に強力ですが、万が一に備えて、さらに検討していくつかの状況を試してみてください。今後さらに発見された場合は、それらを追加します。

foreach は配列を走査する簡単な方法を提供し、データやオブジェクトの内容を簡単に読み取ることができます。ただし、公式ドキュメントには、foreach は内部配列ポインターに依存しているため、ループ内でその値を変更する可能性があると記載されています。予期しない動作の原因となります。したがって、基本的には、1. ループ内で値を変更しないでください。変更しないと、期待した結果を超えてしまいます。2. '&' は、めったに使用されませんが、使用する場合には安全な方法です。 , 参照が完了したら、すぐに unset 関数を呼び出して変数を破棄する必要があります。そうしないと、この変数が次のコードで再度使用されると、ループの最後の値が変更され、たとえば予期しない値が取得されます。 : リストがループで出力されると、出力の最後の行には多くの乱雑な値または null 値が含まれます。 unset を使用すると、この問題が解決されます。

in_array、その意味は、前の文字列が次の配列に存在するかどうかをチェックすることであり、ほとんどの場合、これも同様に機能しますが、次の配列がarray(0,1,2, 3など)の整数の場合は、 )、問題があります。PHP は前の文字列を intval して、値 0 が得られるようにします。すると、この方程式が再び成立します。したがって、次のデータが整数であると判断された場合、特に 0 である可能性がある場合 (これによりすべての文字列が置き換えられる可能性があります)、この関数を使用してはなりません。代わりに key_exists を使用できますが、次のデータを使用する必要があります。 array_flip を使用して反転操作を実行します。

文字列を配列として使用して値を取得するとどうなるでしょうか? PHP は非常にフォールト トレラントな言語であるため、間違いを修正できるように最善を尽くします。そのため、参照添字は 0 に変換されます。その場合、文字列添字は 0 になり、値は You になります。最初の文字列の値を取得します。解決策は、添え字 is_array を参照する前に、変数が配列であるかどうかを確認することです。

あれこれ問題に遭遇し、それについて話し続けてきた先輩はたくさんいますが、それでも結局は間違いを避けることはできません。もしかしたらこれが社会なのかもしれない!みんなとても忙しいのに、あなたのくだらないコードを解読する時間がありません! 笑

上記では、PHP の foreach/in_array における珍しい問題をいくつか紹介しており、関連コンテンツも含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPのreaddir関数次の記事:PHPのreaddir関数