Başlık aynen ben tam olarak soruyu açıklayan zor bir zaman yaşıyorum, soruyorum eşleşmiyor, beni affet.
Aşağıdaki PHP kodu göz önünde bulundurun:
#!/usr/bin/php
<?php
class foo{
function bar()
{
return true;
}
}
if (true && $a = new foo() && $a->bar()) {
echo "true";
} else {
echo "false";
}
Bu verir
Fatal error: Call to a member function bar() on a non-object
$ a-> bar () için; ifadesi.
Aşağıdaki C kodu göz önünde bulundurun:
int main(void)
{
int i = 0;
if (i += 1 && printf("%d\n", i))
{
printf("Done: %d.\n", i);
}
}
Bu çıkışlar:
0
Done: 1.
Neden bu? C ve PHP kısa devre bu ifadelerin iddia ve değerlendirmek sağa sola yana, ben beklemek ifadelerde ayarlanmış bir değeri sağ ifadeler kullanılmak üzere bıraktı. Kaçırdığım bir şey var mı?