Как случайно получить минимальное значение из массива? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть массив с несколькими одинаковыми минимальными значениями. Могу ли я узнать, как случайным образом получить одно из минимальных значений?

Вот мой пример кода: -

$aryNo = array(
                    0 => 34, 1 => 34, 2 => 51, 3 => 12, 4 => 12,
                    5 => 12, 6 => 56, 7 => 876, 8 => 453, 9 => 43,
                    10 => 12
);
$b = array_keys($aryNo, min($aryNo));  //Here only can get 1 value.
$intNo = $b[0];

Могу ли я узнать, как получить список минимальных значений (3 => 12, 4 => 12,5 => 12,10 => 12) и случайным образом выберите один из них, чтобы я мог установить в $ intNo?

Ответы [ 4 ]

1 голос
/ 24 апреля 2020
$aryNo = array(
    0 => 34, 1 => 34, 2 => 51, 3 => 12, 4 => 12,
    5 => 12, 6 => 56, 7 => 876, 8 => 453, 9 => 43,
    10 => 12
);
$b = array_keys($aryNo, min($aryNo));  //Here only can get 1 value.

// Taking a random KEY from $b
$key = array_rand($b);

// Taking a KEY from $aryNo which is under `$key`
echo $b[$key];

// Taking a VALUE from `$aryNo` which is under `$b[$key]`
echo $aryNo[$b[$key]];

Скрипка .

0 голосов
/ 25 апреля 2020

Я обнаружил, что если я использую shuffle (); также работа для меня. Вот мой пример: -

$aryNo = array(
                    0 => 34, 1 => 34, 2 => 51, 3 => 12, 4 => 12,
                    5 => 12, 6 => 56, 7 => 876, 8 => 453, 9 => 43,
                    10 => 12
);
 $aryNo2 = array_keys($aryNo, min($aryNo));
                shuffle($aryNo2); //
                $intWinNo = $aryNo2[0];

Спасибо за предложение и ответ @u_mulder.

0 голосов
/ 24 апреля 2020
`<?php
    $sortArr = array();
    $aryNo = array(0 => 34, 1 => 34, 2 => 51, 3 => 12, 4 => 12,5 => 
    12, 6 => 56, 7 => 876, 8 => 453, 9 => 43,10 => 12);
    asort($aryNo);
$aryNo = array_values($aryNo);
print_r($aryNo);
echo $aryNo[0];
?>`
0 голосов
/ 24 апреля 2020

Попробуйте что-то вроде этого:

<code>$aryNo = [34,34,34,51,12,12,12,56,876,453,43,12];

foreach($aryNo as $a) {
 $finalArray[$a][] = $a;   
}

print("<pre>".print_r($finalArray,true)."
"); $ minKey = min (array_keys ($ finalArray)); print ("
".print_r($finalArray[$minKey],true)."
"); $ randIndex = array_rand ($ finalArray [$ minKey]) ; print_r ("Key:". $ randIndex. ",". $ finalArray [$ minKey] [$ randIndex]);

Печать первых отпечатков:

Array
(
    [34] => Array
        (
            [0] => 34
            [1] => 34
            [2] => 34
        )

    [51] => Array
        (
            [0] => 51
        )

    [12] => Array
        (
            [0] => 12
            [1] => 12
            [2] => 12
            [3] => 12
        )

    [56] => Array
        (
            [0] => 56
        )

    [876] => Array
        (
            [0] => 876
        )

    [453] => Array
        (
            [0] => 453
        )

    [43] => Array
        (
            [0] => 43
        )

)

Than Вы выбираете ключ min, и это печатает это:

Array
(
    [0] => 12
    [1] => 12
    [2] => 12
    [3] => 12
)

В конце вы выбираете случайный ключ из этого массива и печатаете значение:

Key: 2, Value: 12
...