philip          Wed May 28 01:10:57 2003 EDT

  Added files:                 
    /phpdoc/en/appendices       comparisons.xml 
  Log:
  Initial documentation.  This appendix compares various functions, comparison
  operators, and types.
  # Not yet put into manual.xml.in until others have a look at this :)
  
  
Index: phpdoc/en/appendices/comparisons.xml
+++ phpdoc/en/appendices/comparisons.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<appendix id="types.comparisons">
 <title>PHP type comparison tables</title>
 <para>
  The following tables demonstrate behaviors for PHP 
  <link linkend="ref.types">types</link> and 
  <link linkend="language.operators.comparison">comparison 
  operators</link>, for both loose and strict comparisons.  This 
  supplemental is also related to the manual section on 
  <link linkend="ref.types">type juggling</link>.  Inspiration was provided 
  by various user comments and by the work over at 
  <ulink url="&url.blueshoes.comparisons;">BlueShoes</ulink>.
 </para>
 <para>
  Before utilizing these tables, it's important to understand types and their
  meanings.  For example, <literal>"42"</literal> is a <type>string</type> 
  while <literal>42</literal> is an <type>integer</type>.  &false; is a
  boolean while <literal>"false"</literal> is a string.
 </para>
 <note>
  <para>
   HTML Forms do not pass integers, floats, or booleans, they pass strings.
   To find out of a string is numeric, you may use
   <function>is_numeric</function>.
  </para>
 </note>
 <para>
  <table>
   <title>Comparisons of <varname>$x</varname> with PHP functions</title>
   <tgroup cols="6">
    <thead>
     <row>
      <entry>&nbsp;</entry>
      <entry><function>gettype</function></entry>
      <entry><function>empty</function></entry>
      <entry><function>is_null</function></entry>
      <entry><function>isset</function></entry>
      <entry><type>boolean</type></entry>
     </row>
    </thead>
    <tbody>
     <row>
      <entry><literal>$x = "";</literal></entry>
      <entry><type>string</type></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>$x = &null;</literal></entry>
      <entry><type>NULL</type></entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>var $x;</literal></entry>
      <entry><type>NULL</type></entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>$x = array();</literal></entry>
      <entry><type>array</type></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>$x = false;</literal></entry>
      <entry><type>boolean</type></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>$x = 1;</literal></entry>
      <entry><type>integer</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>$x = 42;</literal></entry>
      <entry><type>integer</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>$x = 0;</literal></entry>
      <entry><type>integer</type></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>$x = -1;</literal></entry>
      <entry><type>integer</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>$x = "1";</literal></entry>
      <entry><type>string</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>$x = "0";</literal> *</entry>
      <entry><type>string</type></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>$x = "-1";</literal></entry>
      <entry><type>string</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>$x = "php";</literal></entry>
      <entry><type>string</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>$x = "true";</literal></entry>
      <entry><type>string</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>$x = "false";</literal></entry>
      <entry><type>string</type></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </para>

 <para>
  <table>
   <title>Loose comparisons with <literal>==</literal></title>
   <tgroup cols="12">
    <thead>
     <row>
      <entry>&nbsp;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry><literal>1</literal></entry>
      <entry><literal>0</literal></entry>
      <entry><literal>-1</literal></entry>
      <entry><literal>"1"</literal></entry>
      <entry><literal>"0"</literal></entry>
      <entry><literal>"-1"</literal></entry>
      <entry>&null;</entry>
      <entry><literal>array()</literal></entry>
      <entry><literal>"php"</literal></entry>
     </row>
    </thead>
    <tbody>
     <row>
      <entry>&true;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>1</literal></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>0</literal></entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
     </row>
     <row>
      <entry><literal>-1</literal></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"1"</literal></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"0"</literal></entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"-1"</literal></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>NULL</literal></entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>array()</literal></entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"php"</literal></entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </para>

 <para>
  <table>
   <title>Strict comparisons with <literal>===</literal></title>
   <tgroup cols="12">
    <thead>
     <row>
      <entry>&nbsp;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry><literal>1</literal></entry>
      <entry><literal>0</literal></entry>
      <entry><literal>-1</literal></entry>
      <entry><literal>"1"</literal></entry>
      <entry><literal>"0"</literal></entry>
      <entry><literal>"-1"</literal></entry>
      <entry>&null;</entry>
      <entry><literal>array()</literal></entry>
      <entry><literal>"php"</literal></entry>
     </row>
    </thead>
    <tbody>
     <row>
      <entry>&true;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>1</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>0</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>-1</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"1"</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"0"</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"-1"</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry>&null;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>array()</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
      <entry>&false;</entry>
     </row>
     <row>
      <entry><literal>"php"</literal></entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&false;</entry>
      <entry>&true;</entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </para>
 <note>
  <title>PHP 3.0 note</title>
  <para>
   The string value <literal>"0"</literal> was considered non-empty in 
   PHP 3, this behavior changed in PHP 4 where it's now seen as empty.
  </para>
 </note>
</appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->


-- 
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to