从平面数组中获取 3 个随机元素,并按分隔符分割每个元素

问题描述 投票:0回答: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;
}
php arrays random split delimited
3个回答
4
投票

你很接近:

$array = array();
foreach ($in as $r)
    $array[] = explode("|", $r);

3
投票

试试这个...

$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

我想这就是您正在寻找的。


1
投票
foreach($rand as $r){
  $result = explode("|", $r);  
  array_push($array, $result);
}
© www.soinside.com 2019 - 2024. All rights reserved.