-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

これを試して:

$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 に答える