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 上更改为将指针设置为第一个元素。
非常简单,但我想知道为什么这不起作用。
我正在尝试打乱数组并输出结果(在单行结构中)
这是我的代码:
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
- return
- 如果
有些人可能会想:"Why didn't he used the current()
function?"
嗯,看来函数shuffle
只是简单地改变了键的顺序,但指针总是指向同一个元素。这意味着 current()
将始终 return 'A'
.
显然,此行为在 PHP 5.4 上更改为将指针设置为第一个元素。