PHP: $ i = $ i + + çöktü sunucu

3 Cevap

Ben yaklaşık SO tanımadan önce bu birkaç yıl önce bana oldu, ama ben yine de merak ediyorum. Ben hala PHP temellerini öğrenirken, ben yanlışlıkla ben tarayıcıda web sayfasını test edildiğinde $i = $i++;, Sunucu çöktü ve onu geri almak için uzun bir zaman aldı yazdınız. Daha önce bazı oldukça aptalca şeyler yazdığınız ve sonsuz döngü bir demet oluşturulur, ama nedense, o kötü oldu. Bu çizgi çok 'zehirli' neden biliyor mu

3 Cevap

$i = $i++; $i = $i;, esas olarak aynıdır.

Ne yazık ki $i = $i++; "undefined behavior" olarak bilinir.

Her şey derleyici tam ne olup bittiğini idrak edemez, çünkü olabilirdi.

Benzer tanımlanmamış davranışlarını kapsayan mükemmel bir SO soru var here.

Bu hiçbir şeyi kaza gerekir.

$i = $i++;
var_dump($i); // NULL;

PHP Manual Gönderen

It is not necessary to initialize variables in PHP however it is a very good practice. Uninitialized variables have a default value of their type depending on the context in which they are used.

Ayrıca, by default, variables are always assigned by value ve kullandığınız beri Post Increment, başlatılmamış Doları değeri i (NULL) etkin kendini yazılmadan, $ i kopya Birinci atanır. Ne olacağını görmek için bu kod bakın:

$i = 0
$i = $i++;
var_dump($i); // int(0);

PHP hala atama sonra sağ değişken değeri artırmak için çalışacağız eğer ben bilmiyorum. O ilgileniyorsanız, PECL uzantısı Parsekit yüklemek ve daha fazla bilgi için OP kodlarını kontrol edin.

Bu yüzden sunucu çöktü başka bir şey beğenildi.

Bir sunucunun çökmesine olur orada bir şey var. Sadece çalıştı!