输入变量:
$var_in="PDF Is from Adobe Acrobat";
我将首先strsub() 3并且只得到"PDF"
$key_is=substr($var_in,0,3);
我有一些主选项,如果从$key_is
找到1。选项一:
"PDF", "XML", "XLS", "DOC"
将运行somefunction1()
2。选择两个
"PNG", "BMP", "JPG"
somefunction2运行()
3。选择三个
"DAT", "BAC", "SQL"
somefunction3运行()
旧方法是使用
switch ($key_is) {
case "PDF":
runfunction1();
break;
case "DAT":
runfunction3();
break;
...
}
如何使它简单(也许是一些功能)?如果我从主选项添加新项目它会自动转到
功能选项选择。
像这样,如果我在主选项
中添加"GIF""PNG", "BMP", "JPG", "GIF"
将运行runfunction1()不需要更改开关
Using switch and in_array()
//set $test_type and start a switch
switch($test_type) {
case in_array($test_type, $array_opt1):{
somefunction1();
break;
}
case in_array($test_type, $array_opt2):{
somefunction2();
break;
}
case in_array($test_type, $array_opt3):{
somefunction3();
break;
}
default: {
someOtherfunction();
break;
}
}
您可以设置$test_type ="your_type_name",并根据类型获取操作,如下所示
$test_type= "PDF";
$array_opt1 = array("PDF", "XML", "XLS", "DOC");
$array_opt2 = array("PNG", "BMP", "JPG");
$array_opt3 = array("DAT", "BAC", "SQL");
if(in_array($test_type, $array_opt1)){
//send to relevant funcion for this group
somefunction1();
}
else if (in_array($test_type, $array_opt2)) {
somefunction2();
}else if(in_array($test_type, $array_opt3)){
somefunction3();
}else{
someOtherfunction();
}
您可以尝试将每个选项类别插入到类别数组中。所以你可以输入
$imageCategories = ['images', 'PNG','BMP','GIF'];
$dataCategories = ['data','PDF','XML','XLS'];
然后传递一个数组给被调用的函数,例如
handleCategory($categoryArray)
然后检查数组的第一个索引来决定应该运行哪个函数
switch($categoryArray[0]) {
case 'images':
runFunction1();
break;
你可以创建一个智能数组
$key_is = "PDF"
$array_opt1 = array("PDF", "XML", "XLS", "DOC");
$array_opt2 = array("PNG", "BMP", "JPG");
$array_opt3 = array("DAT", "BAC", "SQL");
$array_options = array('1'=> $array_opt1, '2'=> $array_opt2,'3'=> $array_opt3);
$array_func = array('1'=> 'funct1', '2'=> 'func2','3'=> 'func3');
foreach ($array_options as $key => $array_opt){
if (in_array($key_is, $array_opt)){
call_user_func($array_func[$key], $param);
}
}
$array_func[$key]将给出要使用的函数的名称。Call_user_func将调用该函数。如果需要,还可以传递一个参数。如果不需要任何参数,则省略$param。
编辑:如果每个选项的函数名是唯一的,你甚至可以使用函数名作为键:
$array_options = array('funct1'=> $array_opt1, 'funct2'=> $array_opt2,'funct3'=> $array_opt3);
foreach ($array_options as $func_name => $array_opt){
if (in_array($key_is, $array_opt)){
call_user_func($func_name, $param);
}
}