タグ付けされた質問 「php-internals」

7
PHPの「foreach」は実際にどのように機能しますか?
何foreachをし、何をし、どのように使用するか知っていると言って、これに接頭辞を付けましょう。この質問は、それがボンネットの下でどのように機能するかに関するものであり、「これは配列をループする方法です」という言葉に沿って回答したくありませんforeach。 長い間、私はそれforeachがアレイ自体で機能することを想定していました。それから私はそれが配列のコピーで動作するという事実への多くの参照を見つけました、そして私はそれが物語の終わりであるとそれ以来仮定しました。しかし、私は最近この問題について話し合い、少し実験したところ、これは実際には100%真実ではないことがわかりました。 私の言いたいことをお見せしましょう。次のテストケースでは、次の配列を使用します。 $array = array(1, 2, 3, 4, 5); テストケース1: foreach ($array as $item) { echo "$item\n"; $array[] = $item; } print_r($array); /* Output in loop: 1 2 3 4 5 $array after loop: 1 2 3 4 5 1 2 3 4 5 */ これは、ソース配列を直接操作していないことを明確に示しています。ループ中にアイテムを配列に常にプッシュしているため、ループが永久に継続します。しかし、これが事実であることを確認するために: テストケース2: foreach ($array …

30
「zend_mm_heap破損」の意味
突然、アプリケーションでこれまでにないほどの問題が発生しました。Apacheのエラーログを確認することにしたところ、「zend_mm_heapが破損しています」というエラーメッセージが見つかりました。これは何を意味するのでしょうか。 OS:Fedora Core 8 Apache:2.2.9 PHP:5.2.6

3
重複する配列キー(注意:メンバー変数「a」が__sleep()から複数回返されます)
タイトルは少しばかげているように見えるかもしれませんが、私はこれについて完全に真剣です。今日の仕事で、説明できない奇妙なPHPの動作に遭遇しました。幸いにも、この動作はPHP 7.4で修正されているため、誰かがそれに偶然出会ったようです。 私は何がうまくいかなかったかを説明するために小さな例を作りました: <?php class A { private $a = 'This is $a from A'; public $b = 'This is $b from A'; public function __sleep(): array { var_dump(array_keys(get_object_vars($this))); return []; } } class B extends A { public $a = 'This is $a from B'; } $b = new …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.