array、isset、三元运算符、find()
array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法
if(isset($_GET['id'])) {
// 根据id查询结果
$pid=isset($_POST['pid'])?(int)$_POST['pid']:0;
三元运算符的功能与“if...else”流程语句一致,它在一行中书写,代码非常精练、执行效率更高。
在PHP程序中恰当地使用三元运算符能够令脚本更为简洁、高效。
代码格式如下:(expr1) ? (expr2) : (expr3);
解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。
实现同样的功能,若使用条件流程语句,就需要书写多行代码:
if(expr1) {
expr2;
} else {
expr3;
}
if($pid==0){ $data=0;
假如pid恒等于0,那么data恒等于0
$data=$list['path'].'-'.$list['id'];//子类的path为父类的path加上父类的id
find()
ThinkPHP find() 方法是和 select() 用法类似的一个方法,不同之处 find() 查询出来的始终只有一条数据,即系统自动加上了 LIMIT 1 限制。
当确认查询的数据记录只能是一条记录时,建议使用 find() 方法查询,如用户登录账号检测。
$condition['username'] = 'Admin'; $condition['password'] = MD5('123456'); // 查询数据 $list = $Dao->where($condition)->find(); if($list){ echo '账号正确'; }else{ echo '账号/密码错误';
id=$pid未完待续。。。
select()和find()方法,两个方法都能返回数据集数组,但有什么不同呢?先看一下我的代码对比: [php] view plaincopy $tech=M('techlevel','HR_CS_','DB_CONFIG2'); $Data=$tech->where('id=1')->find(); dump($Data); $Data=$tech->where('id=1')->select(); dump($Data); 结果 [php] view plaincopy array(6) { ["ID"] => int(1) ["TechLevel"] => string(2) "10" ["Remark"] => string(4) "��" ["CreateDate"] => string(19) "2013-03-14 15:14:38" ["CreateBy"] => string(5) "admin" ["ROW_NUMBER"] => string(1) "1" } array(1) { [0] => array(6) { ["ID"] => int(1) ["TechLevel"] => string(2) "10" ["Remark"] => string(4) "��" ["CreateDate"] => string(19) "2013-03-14 15:14:38" ["CreateBy"] => string(5) "admin" ["ROW_NUMBER"] => string(1) "1" } } 从上面的代码可以看出,find()返回一个一维数组,select()返回一个二维数组,所以在取值时有所不同,一维数组取值用$data["TechLevel"],二维数组取值用$data[0]["TechLevel"],由于一开始没了解这个用法,调试一天也取不值,最后有dump方法才看到两个方法的不同所在!