PHP 单行数组随机播放无效

PHP Single line array shuffle is not working

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

我正在尝试打乱数组并输出结果(在单行结构中)

这是我的代码:

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

此处需要进行一些小调整 ;)

试试这个简单的函数

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

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

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

试试下面的代码

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

你的基本逻辑有点不对。我假设您只对一个值感兴趣?要考虑到这个逻辑来解决它,你可以这样做:

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

我知道这不是最适合您的解决方案,但它确实有效!

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

这是如何工作的:

  • 将数组赋值给变量$b
  • 打乱变量$b
    • 如果 shuffle() 成功:
      • return数组中的下一个元素
    • 如果 shuffle() 失败:
      • return null

有些人可能会想:"Why didn't he used the current() function?"

嗯,看来函数shuffle只是简单地改变了键的顺序,但指针总是指向同一个元素。这意味着 current() 将始终 return 'A'.

显然,此行为在 PHP 5.4 上更改为将指针设置为第一个元素。