PHP の「ピット」

WBOY
WBOYオリジナル
2016-08-08 09:27:121227ブラウズ

仕事で遭遇しそうな問題について話す - foreach からの引用

リーリー

上記のコードは何を出力しますか? 驚くべきことに、私は仕事中にこれに遭遇しました。原因を理解するのに長い時間がかかりましたが、これには2つの解決策が見つかりました。問題:

リーリー

以下の 2 つの方法で上記の問題を解決できます:

リーリー

方法 1 は、公式マニュアル http://php.net/manual/en/control-structurals.foreach.php にも記載されており、この記事には、これを思い出していただくための特別なヒントがあります

方法 2 と方法 3 がなぜ問題ないのかは、以下を読むとわかります。実際、foreach の &$value は配列内の要素を指すポインタ変数です。まずこれを見てください。tmp は var への参照であり、tmp が変更されると var も変更されます。

リーリー

上記の内容をよりよく理解するには、以下の盗まれた写真を見てください (笑、元のリンクは下に掲載されています)

さて、これでOKになったら、次を見てください(上の絵を描くのにどのようなソフトウェアを使用したかわかりません、手で描くことしかできません、恥ずかしい~~)、まず最初のforeachを見てみましょう:

2 番目の対象:

このとき、実際には、2 番目の foreach ループでは、配列の最後の要素の値が、最初の要素から最後から 2 番目の要素まで変更可能であることが簡単にわかります。この問題を解決します。 , それは非常に単純で、値と 2 番目の foreach の関係を切り取ります。したがって、設定を解除したり、変数名を変更したり、ポインタをリセットしたりすることができます (方法 3)。この時点で。

それでは、公式ドキュメントの下のコメントを見てみましょう

リーリー

参考記事:

http://www.cnblogs.com/CraryPrimitiveMan/p/4030748.html#3085766

http://www.jb51.net/article/39299.htm

この記事の著作権は著者 ifforever (luluyrt@163.com) に帰属します。記事を転載した後は、著者と原文リンクを明記する必要があります。記事ページに掲載されない場合は、法的責任が留保されます。

上記は、PHP の「落とし穴」をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

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