PHP: Testing whether three variables are equal

。_饼干妹妹 提交于 2019-12-09 05:01:38

问题


I've never come across this before, but how would you test whether three variables are the same? The following, obviously doesn't work but I can't think of an elegant (and correct) way to write the following:

if ($select_above_average === $select_average === $select_below_average) { }


回答1:


if ((a == b) && (b == c)) {
   ... they're all equal ...
}

by the transitive relation




回答2:


$values = array($select_above_average, $select_average, $select_below_average);

if(count(array_unique($values)) === 1) {
    // do stuff if all elements are the same
}

Would be another way to do it.




回答3:


if ($select_above_average === $select_average
    && $select_average === $select_below_average) { }



回答4:


you already have your answer by Adam but a good way to remember how to do this correctly is to remember for a single validation you should be wrapping in () braces, if your only doing one single check then you already have the braces provided by the if ( ) statement.

Example:

if ( a === b )

and if your doing multiple then

if( ( a === b ) && ( c === d ) )

Sop if you remember that every set of braces is a validation check, you can have login like this:

if( (( a === b ) || ( c === d )) && ( e === f ) )

if statements and many other logical operations work on hierarchy so that the amount of individual checks within a check has an effect on he parent check.

taking the third example above if a === b or c === d fails then e === f will never be checked as the ab,cd is wrapped in braces so that is returned and checked.

Hope this helps you a little more.




回答5:


I had a unique situation in which I needed to see if the amount of items in three arrays was the same much like this scenario.

This is what I came up with:

(Assume that fields, operators and values are all arrays)

$allfieldscount = array(count($fields), count($operators), count($values)); //store an array of the count of all the arrays.

$same = array_count_values($allfieldscount);//returns an array by values in the array.  We are looking to see only 1 item in the array with a value of 3.

if(count($same) != 1){
    //Then it's not the same
}else{
   //Then it's the same
}

This tactic counts the fields in the different arrays and by using array_count_values if they are all the same then the count of the array it returns will be '1', if it's anything else then it's not the same. Look up array_count_values on php.net to understand more what its doing.



来源:https://stackoverflow.com/questions/4702852/php-testing-whether-three-variables-are-equal

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!