sprintf

把百分号(%)符号替换成一个作为参数进行传递的变量:

<?php
$number = 2;
$str = "Shanghai";
$txt = sprintf("There are %u million cars in %s.",$number,$str);
echo $txt;        // There are 2 million cars in Shanghai.
?>

经典代码案例:(经过删减之后有逻辑错误,只要本博主知道大体意思即可,其他人不要看该案例)

    /**
     *处理到期年份
     * $tableid:字符串
     * $where:筛选需要修改的档案的where条件
     */
    public function updateExpireyear($idArr){
        $emptyList = array();
        $when = '';
        $when_sql = "when %s then '%s' ";
        $em_sql = "when %s then %s ";
        foreach($docList as $k=>&$docone){
            $tmp = sprintf($when_sql,$docone['id'],$docone['expireyear']);
            $when = $when.$tmp;
        }
        if(!empty($emptyList)){
            foreach($emptyList as $emone){
                $emtmp = sprintf($em_sql,$emone['id'],$emone['expireyear']);
                $when = $when.$emtmp;
            }
        }
        $sql = "UPDATE {$tableid} SET `expireyear` = CASE id ".$when." END WHERE `id` in ({$ids}) ";

        $result = $this->getProxy('db')->execute($sql);
    }

传入参数:

array(1527844078575627623,1520502796098626275)

执行sql查询:

UPDATE f1_14_document SET `expireyear` = CASE id when 1520502796098626275 then '15' when 1527844078575627623 then '10' END WHERE `id` in (1520502796098626275,1527844078575627623)

这里使用sprintf 拼凑出了 “when 1520502796098626275 then '15' when 1527844078575627623 then '10'”








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值