} } }

    偷懒小技能PHP

    添加时间:2013-5-31 点击量:

    1、有时辰,在模板里面写变量挺麻烦的,为了快速点儿,写个函数好了。。

    <form action= method=post>
    <label>变量:</label><input name=value type=text /><br/>
    <label>数组:</label><textarea name=codes cols=70 rows=6></textarea><br/>
    <input type=submit value=生成 />
    </form>

    <?php

    ¥code = ¥_POST[codes];
    ¥value = ¥.¥_POST[value];

    function tplval(¥str¥value){
    ¥regex = /(\[.\])(.)/;
    preg_match_all¥regex¥str¥matches);
    foreach¥matches[1] as ¥key=>¥val){
    ¥new .= {.¥value.¥val.}.¥matches[2][¥key].<br/>;
    }
    echo ¥new;
    }

    tplval(
    ¥code¥value);

    ?>

    2、当你所用的 cms 不带有快捷强大的查询办法时,不妨本身写一个生成sql语句的函数:



        ¥table[goods] = array(g,); //表别号,以及查的字段
    
    ¥table[order] = array(o);//同上
    ¥table[member] = array(m,id,name,address);
    //¥table[member] = id,name,address; 表不取别号

    ¥where[o.id] = ¥_GET[id];
    ¥where[o.addTime] = array(between,¥time1¥time2, and); //array(like,%abc); array(in,¥arr);
    ¥where[o.price] = array(>,¥price,or);
    ¥join[left] = array(o.id=g.oid,m.id=o.mid); //默示三张表,依次应用 join left;
    //或都只有一个left join 第二个是 right jion时 : ¥join[right] = array(m.id=o.mid);


    ¥other[order] = array(desc=>o.addTime);
    ¥otehr[limit] = 5,10;

    // 生成查询语句
    function sqlSelect(¥where = array(),¥table = array(), ¥join = array(), ¥other = array()){

    if(!empty¥table) && is_array¥table)){¥sql = SELECT ; }
    foreach¥table as ¥tname => ¥val){

    ifis_array¥val)){

    if( == ¥val[1] || empty¥val[1])){
    ¥fields .= `¥val[0]`.,;
    }
    else{
    ¥arr = explode(,,¥val[1]);
    ¥fields .= `¥val[0]`.`.implode(`,`¥val[0]`.`, ¥arr).`,;
    }
    ¥tableName = `¥tname` AS `¥val[0]`;
    }
    else{
    if( == ¥val){
    ¥fields .= `¥tname`.,;
    }
    else{
    ¥arr = explode(,, ¥val);
    ¥fields .= `¥tname`.`.implode(`,`¥tname`.`, ¥arr).`,;
    }
    ¥tableName = `¥tname`;
    }
    ¥tables.= ¥tableName;
    ¥tableArr[] = ¥tableName;
    }
    ¥tables = substr¥tables, 0, -1);
    ¥fields = substr¥fields, 0, -1);

    ifempty¥join) && !empty¥table)){
    ¥sql .= ¥fields FROM ¥tables;
    }
    elseif(!empty¥join) && is_array¥join)){
    ¥sql .= ¥fields FROM ¥tableArr[0];
    ¥i = 1;
    foreach¥join as ¥key => ¥sec){
    ¥key = strtoupper¥key);
    ifis_array¥sec)){
    foreach¥sec as ¥val){
    ¥sql .= ¥key JOIN ¥tableArr[¥i] ON ¥val ;
    ¥i++;
    }
    }
    else{
    ¥sql .= ¥key JOIN ¥tableArr[¥i] ON ¥sec ;
    ¥i++;
    }

    }
    }

    ifis_array¥where) && !empty¥where)){
    foreach¥where as ¥field => ¥sec){
    ¥arr = explode(.,¥field); //多表查询时,带表名的景象
    ifcount¥arr)==2){
    ¥field = `¥arr[0]`.`¥arr[1]`;
    }
    else{
    ¥field = `¥arr[0]`;
    }
    ifis_array¥sec)){
    ifisset¥sec[2])) ¥link = end¥sec);
    else ¥link = and;

    ¥link = strtoupper¥link);
    ¥keyWord = strtoupper¥sec[0]);
    if(BETWEEN == ¥keyWord || NOT BETWEEN == ¥keyWord){
    ¥wheres .= ¥field ¥keyWord ¥sec[1] AND ¥sec[2] ¥link ;
    }
    elseif(IN == ¥keyWord || NOT IN == ¥keyWord){
    ifis_array¥sec[1])){
    ¥sec[1] = implode(,, ¥sec[1]);
    }
    ¥wheres .= ¥field ¥keyWord¥sec[1]) ¥link ;
    }
    else{
    ¥wheres .= ¥field ¥keyWord ¥sec[1] ¥link ;
    }
    }
    else{
    ¥wheres .= ¥field=¥sec AND ;
    }
    }
    ¥sql .= empty¥table)? substr¥wheres, 0, -4) : WHERE .substr¥wheres, 0, -4);
    }

    ifis_array¥other) && !empty¥other)){
    if(!empty¥other[order])){
    ifis_array¥other[order])){
    foreach¥other[order] as ¥key => ¥val){
    ¥key = strtoupper¥key);
    ¥sql .= ORDER BY ¥val ¥key ;
    }
    }
    else{
    ¥sql .= ORDER BY .¥other[order];
    }
    }
    !empty¥other[limit])? ¥sql .= LIMIT . ¥other[limit] : ;
    }

    return ¥sql;

    }







    真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
    分享到: