-4

Is there any better way to check false positive checking(compare two values) in weak var type in php?

0 == : true, exact false

4 == 1: true, exact false

0 == : true, exact false

0 == 0: true, exact false

0 == : true, exact false

0 == a: true, exact false

1 == 01: true, exact false

== : true, exact false

3 == 3 dogs: true, exact false

100 == 1e2: true, exact false

100 == 100: true, exact false

abc == 1: true, exact false

123 == 123: true, exact false

123 == +0123: true, exact false

<?php
        function is_equal($value1, $value2, $exact=0) {
            $output = "{$value1} == {$value2}: ";
            switch($exact) {
                case 0:
                    if ($value1 == $value2) {
                        $output .= "true, ";
                    } else {
                        $output .= "false, ";
                    } //break;
                case 1:
                    if ($value1 === $value2) {
                        $output .= "\texact true<br>";
                    } else {
                        $output .= "\texact false<br>";
                    } break;
            }
            return $output;
        } //endof is_equal
        echo is_equal(0,false);
        echo is_equal(4,true);
        echo is_equal(0,null);
        echo is_equal(0,"0");
        echo is_equal(0,"");
        echo is_equal(0,"a");
        echo is_equal("1","01");
        echo is_equal("",null);
        echo is_equal(3,"3 dogs");
        echo is_equal(100,"1e2");
        echo is_equal(100,100.00);
        echo is_equal("abc",true);
        echo is_equal(123,"    123");
        echo is_equal(123,"+0123");

    ?>
zoladp
  • 121
  • 1
  • 6

1 Answers1

1

PHP is converting the values to compatible types before comparing.

To compare both type and value, use triple equals.

1 == "1" // true
1 === "1" // false

Comparison operators documentation page

clinton3141
  • 4,751
  • 3
  • 33
  • 46