Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数返回数值_Php_String - Fatal编程技术网

Php 函数返回数值

Php 函数返回数值,php,string,Php,String,这样做的优雅方式是什么 我有这个->MC0001这是输入。它总是以MC开头 这个输入的输出是MC0002 所以我创建了一个函数,在删除MC000后应该返回1。稍后我将把它转换成一个整数,这样我可以生成MC0002,它可以升到MC9999。要做到这一点,我想我需要在字符串中循环并计算零等等,但我想那样会把事情搞得一团糟 有人有更好的主意吗?不确定在有前导零的情况下,是否有更好的方法将字符串解析为整数 我建议做以下几点: 1.循环遍历从位置2开始的字符串,因为您不需要MC部件 2.如果发现一个大于0

这样做的优雅方式是什么

我有这个->MC0001这是输入。它总是以MC开头 这个输入的输出是MC0002

所以我创建了一个函数,在删除MC000后应该返回1。稍后我将把它转换成一个整数,这样我可以生成MC0002,它可以升到MC9999。要做到这一点,我想我需要在字符串中循环并计算零等等,但我想那样会把事情搞得一团糟


有人有更好的主意吗?

不确定在有前导零的情况下,是否有更好的方法将字符串解析为整数

我建议做以下几点: 1.循环遍历从位置2开始的字符串,因为您不需要MC部件
2.如果发现一个大于0的数字,停止,使用当前位置和字符串长度减去当前位置得到子字符串。转换为整数,返回值。

您可以通过在字符串上进行操作来移除MC PAR。< /P>
$a = "MC0001";
$a = substr($a, 2); //Lengths of "MC"
$number = intval($a); //1

这应该可以做到:

<?php
$string = 'MC0001';
// extract the part succeeding 'MC':
$number_part = substr($string, 2);
// count the digits for later:
$number_digits = strlen($number_part);
// turn it into a number:
$number = (int) $number_part;
// make the next sequence:
$next = 'MC' . str_pad($number + 1, $number_digits, '0', STR_PAD_LEFT);

只需使用ltrim删除任何前导字符:


使用filter_var可能是最好的解决方案

echo filter_var("MC0001", FILTER_SANITIZE_NUMBER_INT)."\n";
echo filter_var("MC9999", FILTER_SANITIZE_NUMBER_INT);
我会给你

0001
9999

这些可以转换为int或按原样使用,因为如果您将它们用作数字,PHP将自动转换。

我不明白:函数的输入是什么,期望的输出是什么?你能举一些例子吗?为什么不使用正则表达式?@webband对于这样一个简单的例子来说,这不是不必要的能力。嘿,伙计们,我更新了我的问题来澄清一些事情。我没有使用正则表达式,因为我不知道如何使用它。但我很想看到它对我有用。有趣的解决方案。你可能是指ltrimthough@Jack:是的,忘记可能有尾随的0。我将继续编辑我的答案。我的字符串将是动态的,因此我无法确定会遇到多少尾随的零。@esandrkwn:刚刚编辑了我的答案。使用ltrim只删除前导字符而不是尾随字符。OP详细说明了问题btw,此答案不完整。看起来问题希望MC也在输出中。编辑:我的错,抱歉。是的,它确实给了我想要的输出。谢谢,为什么要投否决票?很明显,有人试图推动他自己的解决方案^^^这不是完整的答案,尽管我没有投票;事实上,我的票也被否决了,尽管它是完整的。
<php
// original number to integer
sscanf( $your_string, 'MC%d', $your_number );
// pad increment to string later on
sprintf( 'MC%04u', $your_number + 1 );
0001
9999
<php
// original number to integer
sscanf( $your_string, 'MC%d', $your_number );
// pad increment to string later on
sprintf( 'MC%04u', $your_number + 1 );