.Net is not a language; it is a framework that can incorporate multiple languages. Source code is first pre-compiled into something called MSIL (Microsoft Intermediate Language) and then translated into actual executables. Out of the box, .Net supports VB.Net, JScript.Net, C#, and C++. Third-party products are available to extend .Net to supporting other languages, including Perl, Python, and PHP.

Advantages (when it comes to Web application development, that is) are very clear.

* PHP is much easier to learn, partly because it requires no adherence to a particular programming style; .Net languages and Java tend to require object-oriented programming.

* PHP runs on virtually any operating system (including Linux and FreeBSD, the workhorses of affordable Web hosting) and HTTP server (which means that you can develop on WIndows/IIS and host on BSD/Apache); .Net runs only on Windows/IIS, while Java requires an application server (Tomcat, WebSphere, WebLogic, etc.), some of which are OS-dependent. Additionally, Java code may not always be portable between different application servers.

* PHP is free, so instead of spending money on software licenses, you can upgrade your hardware.

* PHP natively integrates with a large array of database engines, both open-source (MySQL, PostgreSQL, SQLite) and commercial (Oracle, MS SQL Server); .Net tends to work better with MS SQL Server and draw on ODBC for database connectivity with other engines, while Java relies on JDBC drivers for database connectivity.