我从PHP或cakephp开始。
我有一个案例,当我想获取 Just 代码中的数字类型为字符串时,
这是示例字符串:
PR00006757
我希望在没有 PR 的情况下获得 00006757 的数字
我已经尝试过使用:
$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
pr ($code); exit;
然后我得到结果"00006757"
,
但我希望+1结果,
是"00006757 + 1" = 00006758
,
但实际上,我添加1(+ 1)后的结果是6758
而不是00006758
。
如何以这种方式格式化答案?
答案 0 :(得分:3)
您获得的输出是正确的,因为添加1会自动将$code
转换为整数类型。你应该使用str_pad来填充你得到的整数值,加上1使它回到所需长度的字符串。
$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
$code +=1;
$code = str_pad($code, 8, '0', STR_PAD_LEFT); //convert to padded string
print_r ($code);
修改:Demo Here
编辑2: 添加了长度的自动检测
$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
$len = strlen($code); // store the length of the code
$code +=1;
$code = str_pad($code, $len, '0', STR_PAD_LEFT);
print_r ($code);
答案 1 :(得分:2)
你走在正确的轨道上。使用filter_var是获取所需数字的正确方法。没有办法改变PHP进行基本添加的方式。最好的机会是识别数字上的填充,并在添加后添加填充。以下是对您的代码的更新,可能有所帮助。
$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
$len = strlen($code);
$newcode = $code + 1;
str_pad($newcode, $len, "0", STR_PAD_LEFT);
在使用您的示例输入进行测试后,我收到了:“00006758”。
答案 2 :(得分:1)
这是另一个例子
<?php
$str_code = 'PR00006757';
$code = filter_var($str_code, FILTER_SANITIZE_NUMBER_INT);
$code +=1;
$num_padded = sprintf("%08d", $code);
echo $num_padded;