2011-11-08 15 views
0

私は、ランダム変数名と、左、右、上、下の値を含むことができる配列を持つスイッチを持っています。例えば1つの値だけをチェックする方法は?

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'); 
} 

は、どのように私は、配列内の唯一の値が「南」の場合の例をチェックするスクリプトを作ることができますか?私のスクリプトでは、出力はsomething3になり、値の北と南をチェックすれば、スクリプトはsomething2を出力しますか?

ご理解ください。ありがとう!

+0

一つの方法: '場合(in_array( "南"、$配列)&& in_array(allothervalues、$配列)!){// 南は唯一の値 ある}' – DaveL

+1

ありません私はしないでください本当に理解して...どのようにあなたの質問は、スイッチに関連していますか? –

+0

私は助けたいと思いますが、この例では意味がありません。 –

答えて

2

私はどうなる:

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

配列は、一つの要素を持っている場合にのみ動作します。

[OK]を、私はこれはこれを達成するのはかなり確実な方法だと思います:

<?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' 



?> 
+0

ありがとう、配列は0,1,2,3または4の要素を持つことができます;-) – Jordy

+0

Hmmあなたは言った:\t 配列の唯一の値が '南'であるかどうかをチェックするスクリプトを作る方法はありますか? ?要件が変更されましたか? – Ben

+0

もっと役立つと思われるものを更新しました – Ben

1

あなたはPHPで直接配列を比較することができます。しかし、これは値の順序も比較するので注意してください。

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

あなたが同じ順序を保証することができた場合、あなたはこのような何か行うことができます:

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

よろしくお願いします。ありがとう! – Jordy

0

を、私は簡単に解決策があることだと思いますあなたの探していることを正しく理解していればうまくいくはずです

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'; 
} 
1

この:

<?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

+0

+1は 'array_diff 'を使用しています。これは、私が言うだろう選択肢のツール(または 'array_intersect'など)です。 – hakre

関連する問題