PHP 7.2.0 Beta 3 Released

Voting

Please answer this simple SPAM challenge: max(six, zero)?
(Example: nine)

The Note You're Voting On

Jeffrey
5 years ago
CONTROL STRUCTURE -- BOOLEAN REQUIRED

If you are not sure what will work in your IF statements, try DISECTING your variables. Below I've written three (3) empty CLASS DEFINITIONS (Point, Dimension, and Rectangle), and declared an array called $items that holds all the PHP types you can imagine -- booleans, strings, empty strings, integers, floats, null, arrays, empty arrays, and objects too. The rest of the code really chews up the current $item and spits it out for lunch... Try running this code so you can see the HTML TABLE that is created -- it'll be worth your while.

<?php

class Point { }
class
Dimension { }
class
Rectangle { }

$items = array(true, false, null, 23, 0, -26, 4.21, 0.0, -3.76,
 
'hello', '', array(1, 2, 3), array('', '', ''), array(),
  new
stdClass(), new Point(), new Dimension(), new Rectangle());

echo
'<table cellpadding="4" border="1">
  <tr>
    <th>syntax</th>
    <th>value</th>
    <th>type</th>
    <th>empty</th>
    <th>boolean</th>
  </tr>'
. "\n";

foreach(
$items AS $item)
{
 
$booleanValue = (boolean)$item;
 
$empty = (empty($item) ? 'EMPTY' : '&nbsp;');
 
$type = gettype($item);
 
$syntax = 'if((boolean)';

 
$val;

  if(
$type == boolean)
  {
   
$val = ($booleanValue ? 'true' : 'false');
   
$syntax .= ($val . ')');
  }
  else if(
$type == 'NULL')
  {
   
$val = 'null';
   
$syntax .= 'null)';
  }
  else if(
$type == double && !$booleanValue)
  {
   
$val = '0.0';
   
$syntax .= '0.0)';
  }
  else if(
$type == string)
  {
   
$val = '\'' . $item . '\'';
   
$syntax .= ($val . ')');
  }
  else if(
$type == 'array')
  {
   
$val = $item;
   
$syntax .= '$array)';
  }
  else if(
$type == 'object')
  {
   
$val = get_class($item);
   
$syntax .= ('$' . strtolower($val) . ')');
  }
  else
  {
   
$val = $item;
   
$syntax .= ($val . ')');
  }

  echo
'  <tr style="color: ' . ($booleanValue ? '#006600' : '#880000') . ';">
    <td><code>'
. $syntax . '</code></td>
    <td>'
. $val . '</td>
    <td>'
. $type . '</td>
    <td>'
. $empty . '</td>
    <td>'
. ($booleanValue ? 'TRUE' : 'FALSE') . '</td>
  </tr>'
. "\n";
}

echo
'</table>' . "\n";

?>

Looking at the HTML output: notice that even integers and floats with a value of zero are considered EMPTY, and all that are EMPTY are FALSE boolean values. And take a gander at the boolean type with a false value... somebody is covering there bases!

<< Back to user notes page

To Top