php は開発において非常に効率的であり、これは理解できますが、実行効率が犠牲になります。 php の配列関数は非常に強力ですが、万が一に備えて、さらに検討していくつかの状況を試してみてください。今後さらに発見された場合は、それらを追加します。
Foreach は配列を走査する簡単な方法を提供し、データやオブジェクトの内容を簡単に読み取ることができます。ただし、公式ドキュメントには、foreach は内部配列ポインターに依存しているため、ループ内でその値を変更すると予期しない動作が発生する可能性があると記載されています。 。したがって、基本的には、
1. ループ内で値を変更しないでください。そうしないと、意図した結果が得られません。
2. '&' を使用するのは安全な方法ですが、使用されることはほとんどありません。 used 参照が終了したら、すぐに unset 関数を呼び出して変数を破棄する必要があります。そうしないと、次のコードでこの変数が再度使用されると、ループの最後の値が変更され、次のような予期しない値が発生します。リストがループで出力されると、出力の最後の行に多くの乱雑な値または null 値が表示されます。 unset を使用すると、この問題が解決されます。
例を見てみましょう
<?php /*-------------------------------------------------------------------------*/ /* foreach example 1: value only */ echo "foreach example 1: value only ".'<br />'; $a = array(1, 2, 3, 17); foreach ($a as $v) { echo "Current value of ".$a.":". $v."<br />"; } ?> // 运行结果 foreach example 1: value only Current value of $a: 1 Current value of $a: 2 Current value of $a: 3 Current value of $a: 17
in_array、その意味は、前の文字列が後の配列に存在するかどうかをチェックすることであり、ほとんどの場合、これも同様に機能しますが、後の配列が整数の場合、次のようになりますarray(0,1,2,3) として指定すると、PHP は前の文字列を intval するため、値 0 が得られます。その後、偶然配列にこの値がある場合、方程式は次のようになります。確立されましたが、期待を上回りましたか?
したがって、次のデータが整数であると判断された場合、特にそれが 0 である可能性がある場合 (これによりすべての文字列が置き換えられる可能性があります)、この関数を使用してはなりません。代わりに key_exists を使用できますが、次のデータを使用する必要があります。 array_flip を使用して反転できます。
別の例を見てみましょう
function search($keyWord, $stack) {//此处判断是应该更新还是插入 foreach ($stack as $key => $val) { if (in_array($keyWord, $val)) { return TRUE; } } return FALSE; }
文字列を配列として使用して値を取得するとどうなるでしょうか? PHP は非常にフォールト トレラントな言語であるため、間違いを修正できるように最善を尽くします。そのため、参照添字は 0 に変換されます。その場合、文字列添字は 0 になり、値は You になります。最初の文字列の値を取得します。解決策は、添え字 is_array を参照する前に、変数が配列であるかどうかを確認することです。
PHP での foreach/in_array の使用に関するその他の記事については、PHP 中国語 Web サイトに注目してください。