是否有某种方法可以使用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
答案 0 :(得分: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));
}
答案 1 :(得分: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"
答案 2 :(得分:0)
你自己的功能还不够吗?
if(strlen($string1) < strlen($string2)) {
return $string1;
} else {
return $string2;
}
答案 3 :(得分: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最终将包含最小的字符串。
答案 4 :(得分: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"
?>