Просмотр поста

.
ДоХтор
# dilp (31.05.2017 / 02:17)
Хм,а у меня динамичный набор величин...
Вот вариант для динамических массивов:
* (+/-)
/*
Попробуй добавлять/удалять пары 
    'ключ' => число
в исходном массиве $r
*/

session_id() ?: session_start();

$r = [
    'alfa' => 3,
    'beta' => 9,
    'gamma' => 0,
    'delta' => 6
];

echo 'Выбрана картинка с id: '. findRandKey($r);


function findRandKey($r) {
    $m = (empty($_SESSION['m']) ? ($_SESSION['m'] = $r) : $_SESSION['m']);
    $i = (count($r) > count($m) ? array_diff_key($r,$m) : array_diff_key($m,$r));
    empty($i) ?: $_SESSION['freak'] = $_SESSION['m'] = $r;
        
    do {
        if (!empty($_SESSION['freak'])) {
            $a = &$_SESSION['freak'];
            $k = array_rand($a);
            empty($a[$k]) ?: --$a[$k];
 
            if ($a[$k] < 1) {
                unset($a[$k]);
            }
        } else {
            $_SESSION['freak'] = $r;
        }
    } while (empty($k) || empty($a[$k]));
    
    return $k;
}