Как поочередно выдавать значения?

112
18 ноября 2020, 09:20

Хочу написать такую функцию, которая бы принимала 3 значения:

имя1, имя2, количество_раз
newFunc('Алексей', 'Дмитрий', 5);

И нужно чтобы она работала так:

выполняется 5 переборов
1 = Алексей
2 = Дмитрий
3 = Алексей
4 = Дмитрий
5 = Алексей

И в результат чтобы вернуло

return 'Алексей';

Буду благодарен за полезную информацию.

Answer 1

Если имен всего два, то результат будет зависеть от того, четное число передано или нет

function myFunc($name1, $name2, $num){
    $names = [$name1, $name2];
    return $names[$num % 2];
}

Более интересна была бы общая задача, когда первым аргументом передавалось число, а далее следовало бы переменное число аргументов - имен. Нечто похожее на это:

function func($num, ...$names){
    return $names[$num % count($names)];
}
func(100, 'Василий', 'Иннокентий', 'Кирилл')

Или если есть особое желание передавать число последним аргументом то

function func(...$values){
    $num = array_pop($values);
    ...
}
Answer 2

Вам пригодится деление с остатком.

Псевдокод (т.к. php уже изрядно подзабыл) функции на любое количество людей:

$data = array("Алексей", "Борис", "Виктор", 10) // пример входных данных
func schitalochka ($input)
{
   $num = array_pop($input);
   $number_of_people = count($input);
   $pos = $num % $number_of_people + 1;
   return $input[$pos];
}
  • $num - число.
  • $number_of_people - количество людей.
  • $pos - нужная нам позиция. Прибавляем единицу, т.к. нумерация элементов массива начинается с 0, а мы считаем с 1.
READ ALSO
Вывести ассоциативный массив

Вывести ассоциативный массив

Не могу понять как вывести fetch_assoc()

136
вывод случайного byte[] в Java

вывод случайного byte[] в Java

Помогите разобраться, пожалуйста!

129
Как распечатать JPanel?

Как распечатать JPanel?

Пишу программу по учету заказов одного предприятияЕсть форма, которая по сути есть отчет, то есть на нее добавляется различная информация

151