min()函数,但检索不同的值


min() function, but retrieve different values

是否有某种方法可以使用min()函数检索不同的值?

编辑

min()的工作方式是返回参数列表中使用的值,我需要返回与输入参数连接的其他值。

$string1 = 'This a longer string';
$string2 = 'Short string';
$string_value1 = 320;
$string_value2 = 170;
min($string_value1, $string_value2);    // I want it to return $string2, because it has the lowest value

否。您不能更改min或其他本机PHP函数的行为。但如果我正确理解你的问题,你就不需要了。试试这样的东西:

$string_value1 = 320;
$string_value2 = 170;
$string1 = 'This a longer string';
$string2 = 'Short string';
#first link your numbers and strings together by using an array
$strings = array(
    $string_value1 => $string1,
    $string_value2 => $string2
);
#determine the lowest "string value"
$lowest_index = min($string_value1, $string_value2);
#get the string associated with this value
echo $strings[$lowest_index];         #prints "Short string"

您可以尝试:

简单示例:

$strings = [
        'This a longer string',
        'Short string'
];
echo array_reduce($strings, function ($a, $b) {
    return strlen($b) > strlen($a) ? $a : $b;
});

如果您还需要比较其他类型。。然后你可以使用

示例1

$string1 = 'This a longer string';
$string2 = 'Short string';
$string3 = 'Hello';
 echo minLength($string1, $string2 , $string3);

输出

Hello

示例2

$range = range(170, 320);
shuffle($range);            // Shuffle the array 
echo minLength($range);

输出

170

使用的功能

function minLength() {
    $parse = function ($v) {
        if (is_int($v) || is_float($v)) {
            return $v;
        } elseif (is_string($v)) {
            return strlen($v);
        } elseif (is_object($v) || is_array($v)) {
            return count($v);
        } else {
            return $v;
        }
    };
    $args = (func_num_args() === 1 && is_array(func_get_arg(0)))
             ? func_get_arg(0) : func_get_args();
    return array_reduce($args, function ($a, $b) use($parse) {
        return $parse($b) > $parse($a) ? $a : $b;
    }, reset($args));
}

这在您自己的函数中还不够吗?

if(strlen($string1) < strlen($string2)) {
    return $string1;
} else {
    return $string2;
}

试试这个:

$string1 = 'This a longer string';
$string2 = 'Short string';
$strings = array($string1, $string2);
$length = array();
$smallest = '-N/A-';
foreach ($strings as $k=>$v)
{
    $length[$k] = strlen($v);
}
$min = min($length);
foreach ($strings as $k=>$v)
{
    if ($length[$k] === $min)
    {
        $smallest = $v;
        break;
    }
}

您可以向数组中添加任意数量的值,它将返回具有最小字符数的字符串。如果有多个字符串与最小字符数匹配,则会返回第一个字符串。变量$minimal最终将包含最小的字符串。

这将适用于多个值:

<?php
$array = array("Short string", "This a longer string", "This is an even longer string");
$longest = 0;
for($i = 0; $i < count($array); $i++)
{
    if($i > 0)
    {
        if(strlen($array[$i]) > strlen($array[$longest]))
        {
        $longest = $i;
        }
    }
}
echo $array[$longest]; //outputs "This is an even longer string"
?>