如何检查一个唯一的值?

时间:2011-11-08 18:08:13

标签: php arrays switch-statement

我有一个带有随机变量名的开关和一个可以包含左,右,上和下值的数组。

例如:

switch ($i) {
    case 0:
        $name='something1';
        $array=array('north', 'south', 'west');
        break;
    case 1:
        $name='something2';
        $array=array('north', 'south');
    case 2:
        $name='something3';
        $array=array('south');
}

如何创建一个脚本来检查例如数组中唯一的值是否为“south”?在我的脚本中,输出将是something3,如果我检查值的北和南,脚本会输出一些东西2?

希望你了解我。谢谢!

4 个答案:

答案 0 :(得分:2)

我愿意:

if((count($array) == 1) && ($array[0] == 'south')){
//code here
}

这仅在数组有一个元素时才有效。

好的,我认为这是实现这一目标的一种非常简单的方法:

<?php

function checktangent($array,$tocheck){

$tocheck = explode(',', str_replace(' ', '', $tocheck));

if(count($tocheck) == count($array)){

    $foundall = true;

    foreach($tocheck as $value){
        if(!in_array($value, $array))
          $foundall = false;
        }
    return $foundall;
    }
else
    return false;

}


//Use like:

$array = array('north', 'south', 'west');


if(checktangent($array, 'north, south'))
    echo 'found';
    else
        echo 'not found'



?>

答案 1 :(得分:1)

您可以直接在PHP中比较数组。但要小心,因为这也比较了值的顺序。

var_dump(array(1, 2) == array(1, 2)); //true
var_dump(array(1, 2) == array(2, 1)); //false

如果您可以保证订单相同,则可以执行以下操作:

<?php
    $directions = array('north', 'south');
    switch($directions) {
        case array('north'):
        echo 'north';
        break;

        case array('south'):
        echo 'south';
        break;

        case array('north', 'south'):
        echo 'north south';
        break;
    }
?>

http://codepad.viper-7.com/TCoiDw

答案 2 :(得分:1)

如果我理解你正确寻找的是什么,这应该有用

if (false == count(array_diff(array('north', 'south', 'west'), $array))) {
   echo 'something1';
} else if (false == count(array_diff(array('north', 'south'), $array))) {
   echo 'something2';
} else if (count($array) == 1 AND current($array) = 'south') {
   echo 'something3';
}

答案 3 :(得分:0)

我认为更简单的解决方案是:

 array_unique($array);
 if (count($array) == 1 && in_array('south', $array))
     // Only south exists.