我试图从数组中获取随机值,然后进一步分解它们,这是初始代码:
$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;
}
你很接近:
$array = array();
foreach ($in as $r)
$array[] = explode("|", $r);
试试这个...
$in = array('foo_1|bar_1', 'foo_2|bar_2','foo_3|bar_3','foo_4|bar_4','foo_5|bar_5' );
foreach($in as &$r){
$r = explode("|", $r);
}
$rand = array_rand($in, 3);
“即时”修改
$in
,因此它包含您正在寻找的嵌套数组结构。
现在...
$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 as $r){
$result = explode("|", $r);
array_push($array, $result);
}