【问题标题】:Get the lowest variable in an array获取数组中最小的变量
【发布时间】:2018-12-20 14:31:01
【问题描述】:

我需要在 5 个变量的值中取最小值。

我希望如果变量未设置或为空,脚本必须从结果中排除该变量。

$var1='17';
$var2='19';
$var3='20';
$var4='1';
$var5='';

$arr = compact('var1','var2','var3','var4','var5');  // Stores values in array $arr

$highval = max($arr);
$lowval  = min($arr);
$stores=count(array_filter($arr));

echo 'Item is available in '.$stores.' vars and is between '.$lowval.' and '.$highval.'';

例如分配$var4='',最小值将是$var1,而不是$var4。也可以有多个变量未设置或为空。

你将如何编辑上面的脚本来完成它?

【问题讨论】:

  • 为什么不直接定义一个数组而不是让你的代码臃肿?
  • 如果您的变量名以数字结尾,则说明您使用了错误的变量。
  • 使用array_filter 之前找到最小值/最大值。

标签: php arrays comparison min


【解决方案1】:

如果您使用array_filter 来显示计数,那么您可以在最小值/最大值之前使用它。代码应该是这样的:

<?php    
    $var1 = '17';
    $var2 = '19';
    $var3 = '20';
    $var4 = '1';
    $var5 = '';

    $arr = compact('var1', 'var2', 'var3', 'var4', 'var5');  // Stores values in array $arr
    $filtered = array_filter($arr);
    $highval = max($filtered);
    $lowval = min($filtered);
    $stores = count($filtered);

    echo 'Item is available in ' . $stores . ' vars and is between ' . $lowval . ' and ' . $highval . '';

更新

如果你把数字数组写成这样会更好:

$arr = ['17', '19', '20', '1', ''];
$filtered = array_filter($arr);
$highval = max($filtered);
$lowval = min($filtered);
$stores = count($filtered);

echo 'Item is available in ' . $stores . ' vars and is between ' . $lowval . ' and ' . $highval . '';

【讨论】:

    【解决方案2】:

    $arr 数组中有字符串值,所以需要转换成数字然后你的问题就会解决。

    添加行:$arr = array_map('intval', $arr); 用于数字转换的行。

    试试这个:

    $var1='17';
    $var2='19';
    $var3='20';
    $var4='1';
    $var5='';
    
    $arr = compact('var1','var2','var3','var4','var5');  // Stores values in array $arr
    $arr = array_map('intval', $arr);
    $arr1 = array_filter($arr, function($a) { return ($a !== 0); }); // Remove if Array value have 0
    
    $highval = max($arr1);
    $lowval  = min($arr1);
    $stores=count($arr);
    
    echo 'Item is available in '.$stores.' vars and is between '.$lowval.' and '.$highval.'';
    

    我们的输出:

    Item is available in 4 vars and is between 1 and 20
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-30
      • 2014-08-06
      • 2016-03-28
      • 1970-01-01
      • 2015-12-22
      • 2017-05-02
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多