这个php字符串加入让我抓狂!

时间:2010-11-13 09:37:18

标签: php codeigniter

我想在$ _POST前面加一个“0”

$currency = $_POST['Currency']; // lets say 900
$currency = "0".$currency;
echo $currency;

应该返回0900,但它返回900.

有什么想法吗?

修改

这是完整的功能

function validate(){

        $ref = $this->input->post('Ref');
        $shop = $this->input->post('Shop');
        $amount = $this->input->post('Amount')*1000;
        //$currency = $this->input->post('Currency');
            //$currency = $_POST['Currency']; // lets say 900
            //$currency = "0".$currency;
        $currency = str_pad($_POST['Currency'],4,'0',STR_PAD_LEFT);

        $query = $this->db->query("SELECT * FROM shop_validation WHERE merchant_ref = '$ref' ");
        if($query->num_rows() > 0) {

            $row = $query->row_array();

            $posts = "";

            foreach ($_POST as $name => $value) {
                $posts .= $name." / ".$value;
            }

            $this->db->query("INSERT INTO transactions (shop,amount,currency,posts) VALUES ('$shop','$amount','$currency','$posts')");


            if($row['merchant_ref'] != $ref)
            {
                echo "[NOTOK]";
                return;
            }

            if($row['merchant_id'] != $shop)
            {
                echo "[NOTOK]";
                return;
            }

            if(trim($row['amount']) != $amount)
            {
                echo "[NOTOK]";
                return;
            }

            if($row['currency_code'] != $currency)
            {
                echo "[NOTOK]";
                return;
            }

            echo "[OK]";

        }


    }

编辑

此脚本在Codeigniter框架上运行

3 个答案:

答案 0 :(得分:6)

如果您想要的是确保输入具有一定数量的数字,并带有前导零,我前一段时间写了一个提示,确实如此:

<?php
$variable =  sprintf("%04d",$_POST['Currency']);
?>

这将回显前导零,直到$variable长度为4个字符。以下是一些例子:

  

如果$_POST['Currency']的值为。{   '3'它会回应'0003'

     

如果$_POST['Currency']的值为。{   '103'它会回应'0103'

     

如果$_POST['Currency']的值为。{   '3103'它会回应'3103'

即使字符数超过4(在您的情况下),这也很好,因为它只会忽略该功能而不会在其前面添加任何内容。希望它有所帮助:)

答案 1 :(得分:1)

您可能希望使用PHP的str_pad()函数

$currency = str_pad($_POST['currency'],4,'0',STR_PAD_LEFT)

有关详细信息,请参阅php manual

答案 2 :(得分:0)

您的问题是自动转换,其中变量可以是字符串或数字值,php猜测您不能使用哪一个。当您使用点运算符对其进行字符串连接时,您的货币变量将被用作字符串,但是当您回显它时,它会假定它是一个整数并抛出整数值。您可以echo (string)$currency或使用str_pad()printf()函数获取更有用的输出值。

编辑:问题中的代码实际上对我有效。您必须简化示例,并且您的实际输出函数不是您在此处所呈现的内容,因为在该代码中,自动类型转换的工作正常。