有更多写法吗?

黄袍披身 2015-03-05 03:18:15

<?php


//======================
$test = 1;
switch ($test) {

case 1:
case 2:
case 3:
case 4:
//run one
break;
case 5:
break;
case 6:
default:
break;
}

//=========================

if (in_array($test, array(1, 2, 3, 4))) {
//run one
} else {
//xxxx
}


//==========================
$arr = array(
1 => 'run1',
2 => 'run1',
);

$runArr = $arr[1]();

function run1()
{
echo 'tttt';
}

...全文
348 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
种草德鲁伊 2015-03-06
  • 打赏
  • 举报
回复
引用 12 楼 xuzuning 的回复:
我认为通过类的 __call 方法实现是最稳妥的
那再__call里又要怎么实现?
xuzuning 2015-03-06
  • 打赏
  • 举报
回复
我认为通过类的 __call 方法实现是最稳妥的
狄默默斯基 2015-03-06
  • 打赏
  • 举报
回复
实用最简单!不需要太精简
智商众筹 2015-03-06
  • 打赏
  • 举报
回复

<?php

function run($t, $s){
	$data = array(
		1 => function($param) {
			return serialize($param);
		},
		2 => function($param) {
			return json_encode($param);
		},
	);
	if(!isset($data[$t])){
		return false;
	}else{
		return $data[$t]($s);
	}
}

echo run(2, array('data' => '一个数组'));
种草德鲁伊 2015-03-06
  • 打赏
  • 举报
回复
更多的写法我不肯定没有,因为php是动态脚本语言,可以做很多蛋疼的事。 但是只有结合实际用途,才能找到最适合的用法。
种草德鲁伊 2015-03-06
  • 打赏
  • 举报
回复
if,switch适合固定较少的分支, hashtable适合动态的或者较多的分支. 要是你足够蛋疼,用文件include也是可以的。
tottyandbaty 2015-03-06
  • 打赏
  • 举报
回复
只要能读懂就行
黄袍披身 2015-03-06
  • 打赏
  • 举报
回复
引用 5 楼 fdipzone 的回复:
感觉用key => value比较好。 function run($test){ return ($test>=1 && $test<4)? 'one' : ''; }
one:下面可能还有些代码 简短的应该不错 如果代码还是有一些的话这样写看起来有点强迫症 哈哈哈 不过 这是 我上面列出的新方法 谢谢 楼下还有吗? 有个朋友也有给出一个 调用后静态类的方法 跟你这个大同小异了
傲雪星枫 2015-03-05
  • 打赏
  • 举报
回复
感觉用key => value比较好。 function run($test){ return ($test>=1 && $test<4)? 'one' : ''; }
ohmygirl 2015-03-05
  • 打赏
  • 举报
回复
个人感觉,如果对于$test的每一个值,都会执行一个唯一的函数(如1,2执行了函数run1, 则1, 2不再执run2),用switch ..case应该算是比较简洁的了。 而如果每个test值,都可能执行多个函数(如2同时执行run1, run2),那么更好的设计方案是: array( 1 => array('run1', 'run2'), 2 => array('run2', 'run3'), ... ) 这有点类似事件绑定,同一个节点上绑定了多个事件(这里是执行函数) 然后getFunction List ............bla bla. 这样,最主要的维护工作在上述那个对应数组,相当于手动维护一个数据库。。。
一起混吧 2015-03-05
  • 打赏
  • 举报
回复
感觉简洁不了呢
黄袍披身 2015-03-05
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
什么意思? 您想表达什么
就是这样的逻辑 还有什么方式 简洁直达目的. 不查数据库 这个 case 可能会增加更多 不好维护 $test = 1; switch ($test) { case 1: case 2: case 3: case 4: //run one break; case 5: break; case 6: default: break; }
xuzuning 2015-03-05
  • 打赏
  • 举报
回复
什么意思? 您想表达什么

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧