先从一个常见的问题入手,在页面中显示今天的星期,如果还用下面的方式,那就需要好好看看本文章了
$result = '';
switch (date('w')){
case 0:
$result ='星期日';break;
case 1:
$result ='星期一';break;
case 2:
$result ='星期二';break;
case 3:
$result ='星期三';break;
case 4:
$result ='星期四';break;
case 5:
$result ='星期五';break;
default:
$result ='星期六';
}
return $result;
编程人员一般采用下面的方式,将星期组织成一个数组(可以称作表),安卓索引取出对应的汉字。
$map= array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
return $map[date('w')];
这就是表驱动,在大家的编程生涯中或多或少都接触过,只是没有提出来总结一下,现在是不是觉得自己的实现方式很高大上了。
表驱动法是一种编程模式,从表里面查找信息而不是使用逻辑语句(if…else…switch)。
上面只是一维表驱动,下面扩展正多维,先看一个二维的例子,这也是表驱动经典的例子了。
《星际穿越》(原来例子不是这样描述滴)中人类生产食物的总和有限,不得不根据对象的特点进行食物的分配,规则如下
18岁以下男可以领取100斤食物
18-60岁男可以领取120斤食物
60岁以上男可以领取100斤食物
18岁以下女可以领取90斤食物
18-60岁女可以领取110斤食物
60岁以上女可以领取95斤食物
if....else...方式
function getFoodWeight($age, $gender)
{
if ($age < 18) {
if ($gender) {
$food = 100;
} else {
$food = 90;
}
} else if ($age > 60) {
if ($gender) {
$food = 100;
} else {
$food = 95;
}
} else {
if ($gender) {
$food = 120;
} else {
$food = 110;
}
}
return $food;
}
表驱动方式,第一维度为年龄,第二维度为性别
$config = array(
array(90, 100),
array(110, 120),
array(95, 100),
);
function getFoodWeight($age, $gender)
{
global $config;
$ageDimension = ($age - 18 > 0) + ($age - 60 > 0);
$genderDimension = $gender;
return $config[$ageDimension][$genderDimension];
}
表驱动方式是不是使代码能够使代码简单、明了,便于维护。
忽然有一天开始加入身材胖、正常、瘦因子进行食物分发,就是如下的规则
18岁以下男胖子可以领取100斤食物
18岁以下男瘦子可以领取100斤食物
........
那就是三维表驱动啦。
分享到:
相关推荐
1. C语言基础:包括变量、数据类型、控制流(如if...else语句)、函数等。 2. 测试框架:理解DxTestCase的使用方法,可能包括断言、测试套件、测试用例的组织和执行流程。 3. 嵌入式Linux编程:如何在有限的硬件资源...
Oracle驱动包ojdbc6-11.2.0.3是Oracle公司提供的Java数据库连接(JDBC)驱动程序,主要用于Java应用程序与Oracle数据库之间建立连接,进行数据交互。这个版本的驱动符合Java SE 6(Java Development Kit, JDK 6)的...
在C-Minus语言的词法分析过程中,采用表驱动方法不仅能够简化代码结构,提高代码的可读性和可维护性,还能有效地减少代码量,提高编程效率。 #### 表驱动算法简介 表驱动算法的核心思想是利用表格存储各种状态转换...
在extcon驱动出现之前,同一份USB控制器驱动代码,比较常见的做法就是在设备树(dts)中指明是哪种接口,USB控制器驱动代码中会解析设备树中的定义,通过if...else...来走不同的代码逻辑。如果是MicroB接口,就注册...
目 录 一、VBA语言基础...................................................................................................................1 第一节 标识符....................................................
**商品促销表操作**:在这个实例中,可能涉及到的操作包括读取、修改和更新商品促销信息,这可能需要用到VBA的`Range.Value`属性来获取或设置单元格值,`For Each`循环遍历数据,以及条件判断语句(如`If...Then......
if sender.tag == 1 { // 假设1代表增加,2代表减少 newCount += 1 } else { if newCount > 0 { newCount -= 1 } } // 更新表格数据源 dataSource.array.append("新数据") // 如果是增加 dataSource....
v-if和v-else是Vue.js中的控制指令,用于条件性地渲染一块内容。这些内容只会在指令表达式返回真值时才会渲染。 当使用v-if和v-else遇到问题,尤其是它们没有按预期工作时,可能是由于几个原因造成的。文章中提到的...
4. `switch`语句在某些编程语言中可以转换为`if...else if...else`结构,实现多分支选择。 5. 面向对象设计方法强调使用现实世界的概念来抽象思考问题,通过对象和类的概念来组织代码,而不是单纯关注算法。 6. ...
11. **switch语句**:switch语句可以用一系列if...else if...else语句来改写。 12. **REVOKE语句**:使用REVOKE语句会撤销用户的某些权限,但不会删除用户本身。 13. **数据库系统核心**:数据库管理系统(DBMS)...
- **流程控制**:掌握条件语句(如If...Then...Else)、循环(如For...Next、Do...Loop)以及错误处理(如On Error GoTo)。 - **函数和过程**:创建自定义函数和子程序,提高代码的重用性和可维护性。 #### 4. ...
例如,我们可以使用`For...Next`循环来重复执行登录动作,`If...Then...Else`语句则用于判断登录是否成功,根据返回的结果执行不同的后续步骤。 1. **循环结构**:在QTP中,`For...Next`循环常用于重复执行某一操作...
2. **控制结构**:涵盖条件语句(If...Then...Else)、循环语句(For...Next、While... Wend等)以及选择结构(Select Case)的使用。 3. **函数和过程**:解释如何定义和调用自定义函数和过程,以实现代码模块化。...
2. **多级条件语句**: “IF...THEN...ELSE...”结构用于实现多级条件判断逻辑。 3. **循环控制**: 循环结构在VBA中的应用,如“FOR...NEXT”和“Do While...”循环。 4. **字符串函数**: 文件中使用了多个字符串...
这种方式便于开发过程中调试,也方便在最终版本中关闭不必要的输出以减少性能开销。 ##### 3. CPU型号检测 ```c static int is_s3c2412(struct s3c2410fb_info *fbi) { return (fbi->drv_type == DRV_S3C2412); }...
3. 代码逻辑:使用VB语句(如If...Then...Else,For...Next,While...Wend等)编写处理事件的程序逻辑。 4. 对象:具有属性、方法和事件的实体,例如窗体、控件都是对象。 5. 类与对象:VB支持面向对象编程,允许...
elseif a="###2" & b="###2" tag1="big002" endif ``` 这段关系表达式根据a和b的值,将tag1设定为对应零件的名称。这样,我们可以通过调整a和b的值来控制装配体中零件的选择。 接着,打开Pro/E(Creo)的PROGRAM模型...
此外,VB6支持基本的编程结构,如顺序、选择(If...Then...Else)、循环(For...Next,Do...Loop)等,以及函数和过程的定义。通过这些结构,开发者可以构建出逻辑清晰、功能丰富的应用程序。同时,VB6还提供了大量...
【二手房信息管理系统】是一个基于C语言的程序设计项目,旨在训练学生的编程技能,特别是对C语言文件和...通过实际操作,学生能够深入理解结构体、链表、文件操作以及控制语句(如for、switch、if...else)的用法。