@Ainur100

Вывод рандомного ключа из массива?

есть функция
function printWord(string $digits, array $letters) {
    $chars = str_split($digits);
    $flipped = array_flip($letters);

    $result = '';
    foreach ($chars as $char) {
        $result .= $flipped[$char];
    }
    
    echo $result;
}

$testLetters = [
    'ч' => 0,'л' => 9, 'в' => 1,'к' => 8,'е' => 9,'о' => 2,
];
printWord('0992158', $testLetters);

как видим есть массив $testLetters.Вопрос: если в массиве ключи имеют одинаковые значение,то как вывести рандомный ключ из этих значений?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
@DanKud
Вашу задачу можно реализовать так:

function printWord(string $digits, array $letters) {
    $chars = str_split($digits);
    $result = '';
    foreach ($chars as $char) {
        $current = array_keys($letters, $char);
        $countCurrent = count($current);
        $result .= ($countCurrent > 1) ? $current[rand(0, ($countCurrent - 1))] : $current[0];
    }
    return $result;
}

$testLetters = [
    'ч' => 0,'л' => 9, 'в' => 1,'к' => 8,'е' => 9,'о' => 2,
];

echo printWord('0992158', $testLetters);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@procode
Разработчик
хороший вопрос)

Думаю что будет выводить таки не рандомное, php к этому не склонен.

Скорее, при одинаковых $key вывод

$arr[$key] будет ранжировать по $value

Напишите тестовую функцию - расскажете потом как это в реальности))) там три строки написать))
Ответ написан
romanko_vn
@romanko_vn
array_count_values + array_keys + mt_rand
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы