foreach() 与 PHP\array_rand(x, y) 的奇怪行为

Weird behavior with foreach() with PHP\array_rand(x, y)

我试图通过从 n 项的向量中选择 k 项来随机将属性分配给实体。在 运行 下面的代码片段中,有时有效,有时它会在 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],
          );
        }

When picking only one entry, array_rand() returns the key for a random entry. Otherwise, an array of keys for the random entries is returned.
https://www.php.net/array_rand

因此,当 $factor 恰好是 1 时,只会返回一个键,您无法使用 foreach.

对其进行迭代