我想在$ _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框架上运行
答案 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()
函数获取更有用的输出值。
编辑:问题中的代码实际上对我有效。您必须简化示例,并且您的实际输出函数不是您在此处所呈现的内容,因为在该代码中,自动类型转换的工作正常。