【发布时间】:2015-08-07 17:43:07
【问题描述】:
我有一个最初由 post 变量组成的多维数组,看起来像这样:
$easys = array(
array($easy1min,$easy1max,$easy1enc),
array($easy2min,$easy2max,$easy2enc),
array($easy3min,$easy3max,$easy3enc),
array($easy4min,$easy4max,$easy4enc),
array($easy5min,$easy5max,$easy5enc),
array($easy6min,$easy6max,$easy6enc),
array($easy7min,$easy7max,$easy7enc),
array($easy8min,$easy8max,$easy8enc),
array($easy9min,$easy9max,$easy9enc),
array($easy10min,$easy10max,$easy10enc)
);
我正在尝试从中返回一个随机结果。
我尝试随机播放的函数如下所示:
$shuffle($easy_encounters);
$num = rand($easy_encounters[0][0],$easy_encounters[0][1]);
return "(".$num.") ".$easy_encounters[0][2];
给了
"shuffle 期望参数 1 是数组.."
我也试过 iterator_to_array:
$easy_encounters = iterator_to_array($easy_encounters);
返回错误
“可捕获的致命错误:传递给 iterator_to_array() 的参数 1 必须实现接口 Traversable...”
然后尝试对 array_rand 使用各种语法,例如:
$easy_encounters = array_rand($easy_encounters);
$num = rand($easy_encounters [0][0],$easy_encounters [0][1]);
return "(".$num.") ".$easy_encounters [0][2];
和
$random_obj = $easy_encounters[array_rand($easy_encounters)];
$num = rand($random_obj[0][0],$random_obj[0][1]);
return "(".$num.") ".$random_obj[0][2];
我觉得我在这一切都在打。我承认在遇到 Traversable 错误后,我可能还没有完全理解 iterator_to_array 的用法。
感谢任何帮助。我已经在 SO 附近跋涉,这是我迄今为止使用的示例的地方。
【问题讨论】:
-
您将数组命名为 $easy,但您在任何地方都将其用作 $easy_encounters
-
@Orangepill 抱歉,我忘了表明我将数组分配给了一个会话,然后再次返回会话...
code$_SESSION["enc_easy"] = $easys; $easy_encounters = $_SESSION["enc_easy"]; -
@JayBlanchard 这是一个关于随机化多维数组的具体问题。我不明白你怎么相信这是一个关于解析/语法错误的非常普遍的问题的重复。
-
错误信息中非常清楚地说明了这个问题......你没有得到正确的函数数组......
标签: php arrays random multidimensional-array shuffle