从平面数组中获取 3 个随机元素,并按分隔符分割每个元素
我试图从数组中获取随机值,然后进一步分解它们,这是初始代码:
$in = array('foo_1|bar_1', 'foo_2|bar_2','foo_3|bar_3','foo_4|bar_4','foo_5|bar_5' );
$rand = array_rand($in, 3);
$in[$rand[0]]; //foo_1|bar_1
$in[$rand[1]]; //foo_3|bar_3
$in[$rand[2]]; //foo_5|bar_5
我想要的与上面相同,但每个“foo”和“bar”都可以通过自己的密钥单独访问,例如这个:
$in[$rand[0]][0] //foo_1
$in[$rand[0]][1] //bar_1
$in[$rand[1]][0] //foo_3
$in[$rand[1]][1] //bar_3
$in[$rand[2]][0] //foo_5
$in[$rand[2]][1] //bar_5
我尝试通过 foreach 循环爆炸 $rand
但我显然犯了一些 n00b 错误:
foreach($rand as $r){
$result = explode("|", $r);
$array = $result;
}
I'm trying to get random values out of an array and then break them down further, here's the initial code:
$in = array('foo_1|bar_1', 'foo_2|bar_2','foo_3|bar_3','foo_4|bar_4','foo_5|bar_5' );
$rand = array_rand($in, 3);
$in[$rand[0]]; //foo_1|bar_1
$in[$rand[1]]; //foo_3|bar_3
$in[$rand[2]]; //foo_5|bar_5
What I want is same as above but with each 'foo' and 'bar' individually accessible via their own key, something like this:
$in[$rand[0]][0] //foo_1
$in[$rand[0]][1] //bar_1
$in[$rand[1]][0] //foo_3
$in[$rand[1]][1] //bar_3
$in[$rand[2]][0] //foo_5
$in[$rand[2]][1] //bar_5
I've tried exploding $rand
via a foreach loop but I'm obviously making some n00b error:
foreach($rand as $r){
$result = explode("|", $r);
$array = $result;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你很接近:
You were close:
试试这个:
通过引用修改
$in
数组的所有值,因此在循环之后,所有字符串都被拆分为两个子数组元素。现在,使用
$rand
数组的索引结果访问变异的$in
数组中的三行。Try this:
That modifies all of the values of the
$in
array by reference, so after the loop, all strings have been split into two subarray elements.Now, use the indexed results of the
$rand
array to access three of the rows from the mutated$in
array.array_rand()
返回一个键数组。代码:(演示)
潜在输出:
array_rand()
returns an array of keys when more than one random value is called for.Code: (Demo)
Potential output: