是否可以将关联数组作为参数传递给在Php中切换案例?

时间:2014-04-23 06:28:20

标签: php

我们需要一个控制结构,例如接受关联数组作为参数的开关盒,或类似下面的东西:

php代码:

$asso_array = array($key => $value);

switch ($asso_array) {
    case $asso_array[$key]:
        if ($asso_array[$value] == 'something') {
            echo'then do this';
        }
}

5 个答案:

答案 0 :(得分:3)

使用foreach,因为数组中的$ key将具有多个值:

foreach($array as $key => $value){
    switch($value){
        case 'something':
              echo 'then do this';
              break;
        default:
              echo 'else do something else';
    }
}

答案 1 :(得分:0)

您可能想要使用一个功能:

<?php



function myFunction ($key,  $value){
    switch ($key) {
        case 'a':
            // do something with value
            break;
        default:
            break;
    }
}

$array = array();
foreach($array as $key => $value){
    myFunction($key, $value);
}

答案 2 :(得分:0)

循环遍历数组元素并打开&#39;键&#39;:

foreach($asso_array as $key => $value){
  switch($key)
  {
    case 'something': 
                      if($value === 'something')
                      {
                        echo "then do this";
                      }
                      //You can even do a nested switch on $value here.
                      break;
             default: break;
  }
}

答案 3 :(得分:0)

我认为以下代码可以帮助您更好 - -

$alpha = array("a" => "apple", "b" => "banana", "c" => "cat", "d" => "dog");

function print_alpha($arr_alpha, $key, $input) {
    if($key == $input) {
        switch($key) {
            case 'a':
                echo '"a" for Apple';
            break;
            case 'b':
                echo '"b" for Banana';
            break;
            case 'c':
                echo '"c" for Cat';
            break;
            default:
                echo "'$input' still has to be involved in a case";
        }
    }
}
// Now call the function for each key
array_walk($alpha, 'print_alpha', 'a');
array_walk($alpha, 'print_alpha', 'd');

您可以更合理地扩展它。

答案 4 :(得分:-1)

非常感谢大家,我通过使用以下数组结构解决了这个问题:

 $asso_array = array('key1'=>array('a'=>'b'),'key2'=>array('c'=>'d'));

 foreach ( $asso_array as $key =>$val){
   switch($key)
    {
       case 'key1':

          if($asso_array['key1']['a'] == 'something')
            {
               echo $asso_array['key1']['a'];
            }

      case 'key2':

      if($asso_array['key2']['c'] == 'something')
        {
           echo $asso_array['key2']['c'];
        }
    }

}