Я пытаюсь случайным образом назначить атрибуты сущности, выбрав k элементов из вектора n элементов. При запуске приведенного ниже фрагмента иногда он работает, иногда он дает эту странную ошибку с foreach
InvalidForeachArgumentException: Invalid argument supplied for foreach()
Я читал о нескольких сообщениях о странном поведении с foreach, когда переменная передается по ссылке, и может быть необходимо отключить его, но, похоже, это не связано с этим, поскольку я не использую здесь никаких ссылок. Забавно то, что если я не генерирую $ factor с помощью генератора случайных чисел, а устанавливаю его на постоянное целочисленное значение, код просто работает. Я не совсем уверен, что здесь происходит.
$factor = PseudoRandom\int(
1,
$num
);
$capabilities = vec[];
$random_keys = PHP\array_rand(
$temp,
$factor,
);
foreach ($random_keys as $key) {
$capabilities = Vec\append(
$capabilities,
$temp[$key],
);
}