如果字符串为空,请让php sprintf省略return

时间:2016-03-28 16:39:43

标签: php mysql

我正在努力打印运输标签并获取最终输出以省略第二个地址行(如果存在)。如果使用sprintf()时$ address2为空,有没有办法有条件地排除换行符?

            while($rows=mysql_fetch_array($result)){
                $name = $rows['address_name'];
                $address = $rows['street1'];
                $address2 = $rows['street2'];
                $citystatezip = $rows['city'].', '.$rows['state'].' '.$rows['zip'];
                $country = $rows['country'];
                $text = sprintf("%s\n%s\n%s\n%s\n", $name, $address, $address2, $citystatezip, $country);
                $pdf->Add_Label($text);
            }

1 个答案:

答案 0 :(得分:1)

您的sprintf只有4%'%s'和5个参数。

在这段代码中,我将\ n从sprintf中移除到上面的条件中。

        // Don't use mysql_xxxx functions
        // Should really be using PDO       
        //          +---------------+
        //          |               |
        while($rows=mysql_fetch_array($result)){
            $name = $rows['address_name'];
            $address = $rows['street1'];
            $address2 = $rows['street2'];
            $citystatezip = $rows['city'].', '.$rows['state'].' '.$rows['zip'];
            $country = $rows['country'];
            $addr2 = empty($address2) ? '' : $address2 . "\n";
            $text = sprintf("%s\n%s\n%s%s\n%s\n", $name, $address, $addr2, $citystatezip, $country);
            $pdf->Add_Label($text);
        }