PHP单行数组shuffle无法正常工作

时间:2015-01-02 01:32:09

标签: php arrays random echo shuffle

很简单,但我想知道为什么这不起作用。

我试图改组数组并输出结果(以单行结构)

这是我的代码:

echo shuffle(array("A","B","C"))[0];

这里需要小调整;)

5 个答案:

答案 0 :(得分:2)

你的基本逻辑有点不对劲。我认为你只对一个值感兴趣吗?要记住这个逻辑,你可以这样做:

echo array_rand(array_flip(['A', 'B', 'C']));

答案 1 :(得分:1)

尝试以下代码

   $arr = array("A","B","C");
   shuffle($arr);
   echo $arr[0];

答案 2 :(得分:1)

我知道这不是最好的解决方案,但它有效!

print_r( ( $b=array('A', 'B', 'C') ) && shuffle($b) ? next($b) : null );

这是如何运作的:

  • 将数组分配给变量$b
  • 随机变换$b
    • 如果shuffle()成功:
      • 返回数组中的下一个元素
    • 如果shuffle()失败:
      • return null

有些人可能会想:“为什么他没有使用current()功能?”

好吧,似乎函数shuffle只是改变了键的顺序,但指针始终指向同一个元素。这意味着current()将始终返回'A'

显然,这种行为在PHP 5.4上发生了变化,将指针设置为第一个元素。

答案 3 :(得分:0)

尝试这个简单的功能

$my_array = array("A","B","C","D","E");
shuffle($my_array);
print_r($my_array);

答案 4 :(得分:0)

您需要在单独的变量中传递数组。另外,shuffle()本身只返回一个布尔值,因此你需要返回一个数组元素而不是函数的输出。

$ar = array("A","B","C");
shuffle($ar);
echo $ar[0];