<p>C++ preprocessor <code>#define</code> is totally different.</p>

<p>Is the PHP <code>define()</code> any different than just creating a var?</p>

<pre><code>define("SETTING", 0);  
$something = SETTING;
</code></pre>

<p>vs</p>

<pre><code>$setting = 0;  
$something = $setting;
</code></pre>

Here are the differences, from the
manual
Constants do not have a dollar sign    ($) before them;
Constants may only be defined using the define() function, not by simple assignment;
Constants may be defined and accessed anywhere without regard to variable scoping rules;
Constants may not be redefined or undefined once they have been set; and
Constants may only evaluate to scalar values.
For me, the main benefit is the global scope. I certainly don't worry about their efficiency - use them whenever you need a global scalar value which should not be alterable.