Boolean Comparisons

Introduction

A Boolean comparison is an operation that compares two values to find out whether they are equal or one is higher than the other, using Boolean logic:

• Boolean Values: The comparison can be made to find out if two values are true, false, or opposed
• Numbers: The comparison can be made on two numbers to find out whether they are equal or one is lower/greater than the other
• Characters: A comparison can be made on letters to find out whether they are the same or one alphabetically comes before/after the other
• Strings: The comparison can be made on strings. In this case, the comparison is made the characters in the same position and find out what string is before/after the other
• Dates/Times: The comparison can be made on dates and/or times to find out whether they occur at the same time or one comes before/after another
• Web Controls: The comparison depends on the type of control. On a check box, the comparison can be made to find out whether the control is checked or not. In a group of radio buttons, the comparison can be made to find out what radio button is (currently)/was selected. On a combo box, the comparison can be made to find out what string is/was selected. In a list box, the comparison can be made to find out whether one or more items was/were selected, and what items(s) was(were) selected

Different types of operators are available.

The Comparison for Equivalence

Equivalent ==: Two values are said to be equivalent if they can be evaluated as the same, usually after one has been cast or converted into another. To find out if two values are equivalent even if they are not the same type, use the equivalency operator represented as ==. The formula to follow is:

`\$value1 == \$value2`

If both values are equivalent, the comparison produces a true value. If the values cannot be assessed as being the same, the comparison produces false. As mentioned above, you can compare tweo Boolean values. For examples, some web controls, such as the check box, hold a Boolean value. You can find out whether the value of such a control is true or false. Here is an example:

employee1.php

```<?php
echo "<form name='frmEmploymentDecision' action='employee2.php' method='post'>
<h3>Human Resources: Employment Decision</h3>
<table border='4'>
<tr>
<td>Employee Name:</td>
<td>
<input name='txtEmployeeName' type='text' /></td>
</tr>
<tr>
<td>Full-Time?</td>
<td>
<input name='chkFullTime' type='checkbox'  />
<input name='Submit' type='submit' value='Apply Benefits' /></td>
</tr>
</table>
</div>
</form>";
?>```

employee2.php

```<?php
echo "<form name='frmEmploymentDecision' method='post'>
<h3>Human Resources: Employee Record</h3>";

\$benefits = "";
\$employeeName = htmlspecialchars(\$_POST['txtEmployeeName']);

if(\$_POST["chkFullTime"] == true)
\$benefits = "Health, dental, vision, 401(K)";

echo "      <table border='4'>
<tr>
<td>Employee Name:</td>
<td>
<input name='txtEmployeeName' type='text' value='";

echo \$employeeName;

echo "' /></td>
</tr>
<tr>
<td>Benefits:</td>
<td>
<input name='txtBenefits' style='width: 250px' value='";

echo \$benefits;

echo "' />
</td>
</tr>
</table>
</div>
</form>";
?>```

This would produce:

The comparison can also be performed between strings. For example, you can get the value of a web control and compare it to a string of your choice. Here is an example:

```<?php
echo "<form name='frmPayroll' method='post'>
<div id='formulation'>
<p id='main-title'>Employee Payroll</p>";

\$employeeName = \$_POST['txtEmployeeName'];
\$hourlySalary = (float)htmlspecialchars(\$_POST['txtHourlySalary']);

\$hourlySalary = (float)htmlspecialchars(\$_POST['txtHourlySalary']);
\$weeklyTime   = (float)htmlspecialchars(\$_POST['txtWeeklyTime']);
\$weeklySalary = \$hourlySalary * \$weeklyTime;

\$incomeTax    = 99.10 + (\$weeklySalary * 0.25);

if(\$_POST['cbxMaritalStatus'] == 'Married')
\$incomeTax = 35.50 + (\$weeklySalary * 0.15);

\$netPay = \$weeklySalary  - \$incomeTax;

echo "      <table border='4'>
<tr>
<td>Employee Name:</td>
<td>
<input name='txtEmployeeName' type='text' value='";

echo \$employeeName;

echo "' /></td>
</tr>

<tr>
<td>Marital Status:</td>
<td>
<select name='cbxMaritalStatus'>
<option>Single</option>
<option>Married</option>
</select></td>
</tr>
<tr>
<td>Hourly Salary:</td>
<td>
<input name='txtHourlySalary' type='text' style='width: 60px' value='";

echo \$hourlySalary;

echo "' /></td>
</tr>
<tr>
<td>Weekly Time:</td>
<td>
<input name='txtWeeklyTime' type='text' style='width: 60px' value='";

echo \$weeklyTime;

echo "' />
<input name='Submit' type='submit' value='Calculate' />
</td>
</tr>

<tr>
<td>Income Tax:</td>
<td>
<input name='txtIncomeTax' type='text' value='";

echo \$incomeTax;

echo "' /></td>
</tr>
<tr>
<td>Net Pay:</td>
<td><input name='txtNetPay' type='text' value='";

echo \$netPay;

echo"' /></td>
</tr>
</table>
</div>
</form>";
?>```

This would produce:

In some cases, if the Boolean value of a variable or a web control is true, when performing the comparison, only the name of the variable or control is necessary instead of the whole equivalency expression. For example, instead of if(\$_POST["chkFullTime"] == true) ..., you can use:

employee2.php

```<?php
echo "<form name='frmEmploymentDecision' method='post'>
<h3>Human Resources: Employee Record</h3>";

\$benefits = "";
\$isFullTime = \$_POST["chkFullTime"];
\$employeeName = htmlspecialchars(\$_POST['txtEmployeeName']);

if(\$isFullTime)
\$benefits = "Health, dental, vision, 401(K)";

echo "      <table border='4'>
<tr>
<td>Employee Name:</td>
<td>
<input name='txtEmployeeName' type='text' value='";

echo \$employeeName;

echo "' /></td>
</tr>
<tr>
<td>Benefits:</td>
<td>
<input name='txtBenefits' style='width: 250px' value='";

echo \$benefits;

echo "' />
</td>
</tr>
</table>
</div>
</form>";
?>```

The Comparison for Equality

Equality ===: To compare two values of the same type for equality, use the equality operator represented as ===. The formula to follow is:

`\$value1 === \$value2`

The comparison for equivalency or equality is safely made on natural numbers (integers), characters, strings, dates, times, and objects. The comparison is risky and unpredictable on floating-point numbers (imagine comparing 0.001099 and 0.0011 for equality). Such a comparison should be avoided.

The Comparison for Non-Equivalence

Not Equivalent: <>: or != To find out if two values, whether they are the same type or not, are different, use the <> or the != operator. The formulas to follow are:

```\$value1 <> \$value2
\$value3 != \$value4```

If the values are different, the comparison produces a true result. If the values are equivalent based on their types, the comparison produces false.

The Comparison for Difference

Not Equal: !== To find out if two values of the same type are different, use the !== operator. The formula to follow is:

`\$value1 !== \$value2`

The Comparison for Lower Value

Less Than <: To find out if one value is lower than another, use the < operator. The comparison can be done as follows:

`\$value1 < \$value2`

If the value on the left of the operator is lower than the value on the right side, the operation produces a true value. Otherwise, the result is false.

The Comparison for Lower or Equal Value

Less Than Or Equal To <=: If one value is lower than or equal to another, to compare them, use the <= operator. This can be done as follows:

`\$value1 <= \$value2`

If the left value is lower than the value on the right side or both values are the same, the comparison produces a true result. If the value on the left is greater than the other and they are not equal, the comparison produces false.

The Comparison for Higher Value

Greater Than >: To find out if one value is greater than another value, compare them using an operator as >. It can be used as follows:

`\$value1 > \$value2`

If the value on the left of the operator is greater than the value on the right side, the operation produces a true value. Otherwise, it produces a false result.

The Comparison for Greater or Equal Value

Greater Than Or Equal To >=: If one value is greater than or equal to another, to compare them, use an operator as >=. It can be used as follows:

`\$value1 >= \$value2`

If the value on the left side of the operator is greater than the value on the right side or if both values are equal, the comparison produces a result as true. If the value on the left is greater than the value on the right and the values are also different, the comparison produces a result as false. Here is an example:

```<!DOCTYPE html>
<html>
<head>
<title>Gas Utility Company</title>
<style type="text/css">

#formulation
{
margin: auto;
width:  250pt;
}
#main-title
{
font-size:   18pt;
font-weight: bold;
font-family: Georgia, "Times New Roman", Times, serif;
}
</style>
</head>
<body>

<?php
echo "<form name='frmCalculation' method='post'>
<div id='formulation'>
<p id='main-title'>Gas Utility Company</p>";

\$pricePerCCF    = 50.00;
\$consumption    = htmlspecialchars(\$_POST['txtConsumption']);

if(\$consumption >= 0.50)
\$pricePerCCF = 35.00;

\$monthlyCharges = \$consumption * \$pricePerCCF;

echo "      <table border='4'>
<tr>
<td>Consumption:</td>
<td>
<input name='txtConsumption' type='text' style='width: 80px' value='";

echo \$consumption;

echo "' /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input name='Submit' type='submit' value='Calculate' />
</td>
</tr>
<tr>
<td>Price per CCF:</td>
<td><input name='txtPricePerCCF' type='text' value='";

echo \$pricePerCCF;

echo"' /></td>
</tr>
<tr>
<td>Monthly Charges:</td>
<td><input name='txtMonthlyCharges' type='text' value='";

echo \$monthlyCharges;

echo "' /></td>
</tr>
</table>
</div>
</form>";
?>
</body>
</html>```

Here is an example of using the webpage:

The Spaceship Comparison

Spaceship: The comparison is performed on two natural numbers using the <=> operator as follows:

`\$value1 <=> \$value2`

The comparison produces a value as:

• -1 If value1 is lower than value2
• 0 If both values are equal (or the same)
• 1 If value1 is greater than value2

Here is an example:

```<!DOCTYPE html>
<html>
<head>
<title>Employee Payroll</title>
<style type="text/css">

#formulation
{
margin: auto;
width:  250pt;
}
#main-title
{
font-size:   18pt;
font-weight: bold;
font-family: Georgia, "Times New Roman", Times, serif;
}
</style>
</head>
<body>

<?php
echo "<form name='frmComparisons' method='post'>
<div id='formulation'>
<p id='main-title'>Comparisons</p>";

\$first  = htmlspecialchars(\$_POST['txtFirst']);
\$second = htmlspecialchars(\$_POST['txtSecond']);
\$result = (\$first <=> \$second);

echo "      <table border='4'>
<tr>
<td><input name='txtFirst' type='text' value='\$first'></input></td>
<td>&lt;=&gt;</td>
<td><input name='txtSecond' type=checkbox value='\$second'></input></td>
<td><input name='Submit' type='submit' value='Produces'></input></td>
<td><input name='txtResult' type='text' value='\$result'></input></td>
</tr>
</table>
</div>
</form>";
?>
</body>
</html>```

The Null Coalesce Comparison

Null coalesce: The comparison uses 3 operands and two operators as follows:

`\$value1 ?? \$value2 ?? \$value3`

The operation produces:

• \$value1 If \$value1 holds a value (that is, \$value1 is not NULL), regardless of \$value2 and \$value3
• \$value2 If \$value1 is NULL but \$value2 holds a value, regardless of \$value3
• \$value3 If both \$value1 and \$value2 don't hold values (they are NULL) but \$value3 has a value
• NULL if none of the operands holds a value; that is, \$value1 is NULL, and \$value2 is NULL, and \$value3 is NULL