【问题标题】:php min max function not working properlyphp min max 函数无法正常工作
【发布时间】:2018-12-24 16:16:18
【问题描述】:

我有代码通过使用下面给定的代码从逗号分隔的值范围中获取最小值和最大值

<?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

请指导我在哪里犯错或任何其他工作替代。

【问题讨论】:

  • 您的输入是数组中的一项。您必须将每个数字作为单独的项目添加到数组中。
  • 用破折号替换逗号不会生成变量数组。

标签: php


【解决方案1】:

您在创建数组时不正确。请为此使用爆炸。 Explode 函数会将字符串分解为数组。

第一个参数是要分割字符串的字符,第二个是输入的。在您的情况下,最好在此处添加 str_replace 函数,这样您就不会更改原始输入。

$input = '0-5,4-30,6-50';
$numbers = explode(',', str_replace('-', ',', $input));

现在您可以使用 min 和 max 函数,它们将正常工作。

【讨论】:

    【解决方案2】:

    使用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 
    

    【讨论】:

      【解决方案3】:
      <?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"
      

      【讨论】:

      • 我确实考虑过在逗号和破折号上使用 preg_split,或者在非数字上使用拆分。但我认为 preg_match_all 是更好的选择,因为它可以过滤掉可能的输入错误——只关注提供的数字/数字。
      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2021-01-30
      • 2013-05-16
      • 2019-05-16
      • 1970-01-01
      相关资源
      最近更新 更多