我有使用以下给定代码从逗号分隔值范围中获取最小值和最大值的代码
<?php
$price=$_GET['price'];
$grade = str_replace('-', ',', $price);
$number = array($grade);
$max = max($number);
$min = min($number);
echo "min value is $min <br/>";
echo "max value is $max <br/>";
?>
对于输入?price = 0-5,4-30,6-50 ,这应该输出最小值0和最大值50,但是我上面的代码给出的输出为
最小值是0,5,4,30,6,50 最大值是0,5,4,30,6,50
请指导我在哪里出错或其他替代工作方式。
答案 0 :(得分:2)
创建数组不正确。请为此使用爆炸。爆炸功能会将字符串分成数组。
第一个参数是要在其上分割字符串的字符,第二个参数被输入。在您的情况下,最好在此处添加str_replace函数,因此您不必更改原始输入。
$input = '0-5,4-30,6-50';
$numbers = explode(',', str_replace('-', ',', $input));
现在您可以使用min和max函数,它们将正常工作。
答案 1 :(得分:1)
使用str_replace
方法后,您正在将字符串转换为数组,您的数组如下所示:
Array ( [0] => 0,5,4,30,6,50 )
使用此数组,您无法从数组中获得或获得最大值和最小值。
您需要使用逗号将字符串爆炸为:
$yourArr = explode(",", $grade); // this will convert string into array.
现在您的结果应如下:
Array ( [0] => 0 [1] => 5 [2] => 4 [3] => 30 [4] => 6 [5] => 50 )
完整示例:
<?php
$price='0-5,4-30,6-50';
$grade = str_replace('-', ',', $price);
$yourArr = explode(",", $grade);
$max = max($yourArr);
$min = min($yourArr);
echo "min value is $min <br/>";
echo "max value is $max <br/>";
?>
结果:
min value is 0
max value is 50
答案 2 :(得分:1)
<?php
$price = '0-5,4-30,6-50';
if(preg_match_all('/\d+/', $price, $matches)) {
$min = min($matches[0]);
$max = max($matches[0]);
var_dump($min, $max);
}
输出:
string(1) "0"
string(2) "50"