Php 函数,但检索不同的值

Php 函数,但检索不同的值,php,string-comparison,min,Php,String Comparison,Min,是否有方法使用min()函数检索不同的值 if(strlen($string1) < strlen($string2)) { return $string1; } else { return $string2; } 编辑 min() $string1 = 'This a longer string'; $string2 = 'Short string'; $string_value1 = 320; $string_value2 = 170; min($string_v

是否有方法使用
min()
函数检索不同的值

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

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

在你自己的功能中,这还不够吗

if(strlen($string1) < strlen($string2)) {
    return $string1;
} else {
    return $string2;
}
if(strlen($string1)
您可以尝试:

简单的例子:

$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
170
例2

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

Hello
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));
}
试试这个:

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

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

否。您不能更改
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"

这将适用于多个值:

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


$shortestlength=min(数组映射('strlen',数组($string1,$string2))
@MarkBaker查看我的编辑,我对长度不感兴趣如果你想返回$string2,因为$string\u value2的值最低;$string2和$string_value2(除了人类可读的名称)之间的关系是什么?现在你的问题没有什么意义了。您需要以某种方式将两组数据(字符串和数值)链接在一起。可能是以字符串作为键的关联数组。请参阅我的更新答案。。。我想这就是你想要的不。尝试打印最小值('aaaaaaaa','b');或者只是strlen($string1)