-1

有没有办法用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
4

5 回答 5

1

你可以试试 :

简单的例子:

$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));
}
于 2013-06-28T22:07:14.640 回答
1

不可以。您不能更改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"
于 2013-06-28T22:09:19.020 回答
0

你自己的功能还不够吗?

if(strlen($string1) < strlen($string2)) {
    return $string1;
} else {
    return $string2;
}
于 2013-06-28T22:05:52.983 回答
0

尝试这个:

$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;
    }
}

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

于 2013-06-28T22:08:26.893 回答
0

这将适用于多个值:

<?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"
?>
于 2013-06-28T22:43:52.630 回答