array、isset、三元运算符、find()

array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法

  1. if(isset($_GET['id'])) {
  2. // 根据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方法才看到两个方法的不同所在!

 

 

 


posted @ 2014-11-15 18:36  fleam  阅读(650)  评论(0编辑  收藏  举报