我有一个带有随机变量名的开关和一个可以包含左,右,上和下值的数组。
例如:
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?
希望你了解我。谢谢!答案 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;
}
?>
答案 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.