从多维数组中获取数组并将值传递给PHP中的变量

从多维数组中获取数组并将值传递给PHP中的变量,php,arrays,Php,Arrays,这段代码应该创建一个多维数组,shuffle它,选择第一个数组,并将四个值传递给四个不同的变量,分别称为$common、$unspecial、$ravel和$superravel <?php //create multidimentional array $distribution = array ( array(115, 50, 15, 0), array(115, 49, 16, 0), array(115, 48, 17, 0), array(116, 49, 15, 0), ar

这段代码应该创建一个多维数组,
shuffle
它,选择第一个数组,并将四个值传递给四个不同的变量,分别称为$
common
$unspecial
$ravel
$superravel

<?php

//create multidimentional array
$distribution = array
(
array(115, 50, 15, 0),
array(115, 49, 16, 0),
array(115, 48, 17, 0),
array(116, 49, 15, 0),
array(116, 48, 16, 0),
array(116, 47, 17, 0),
array(117, 48, 15, 0),
array(117, 47, 16, 0),
array(117, 46, 17, 0),
array(118, 47, 15, 0),
array(118, 46, 16, 0),
array(118, 45, 17, 0),
array(119, 46, 15, 0),
array(119, 45, 16, 0),
array(119, 44, 17, 0),
array(120, 45, 15, 0),
array(120, 44, 16, 0),
array(120, 43, 17, 0),
);

//shuffle the md-array
shuffle($distribution);

//select first array from $distribution
$slice[] = array_slice($distribution ,0, 1);

//create an array for key values
$cardrarity = array('common', 'uncommon', 'rare', 'superrare');

//combine $cardrarity and $slice
$cardraritycount = array_combine($cardrarity, $slice);

//create a variable for each value in 
foreach ($cardraritycount as $key => $value){
    $$key = $value;
    }
?>

当我尝试将
$slice
$cardrarity
组合时,在尝试回显内容时没有得到任何输出。我想我的问题是当我在做数组切片时。任何帮助都将不胜感激。

没有必要把这些简单的事情复杂化。只需这样做:

// Shuffle the array
shuffle($distribution);

// Assign values to the respective variables
list($common, $uncommon, $rare, $superrare) = $distribution[0];

// Display values
echo $common . "<br />";
echo $uncommon . "<br />";
echo $rare . "<br />";
echo $superrare . "<br />";
//洗牌数组
洗牌(分配);
//为各个变量赋值
列表($common、$uncomment、$ravel、$superravel)=$distribution[0];
//显示值
echo$common。“
”; echo$不常见。“
”; echo$稀有。“
”; echo$super稀有。“
”;
以下是参考资料:

array\u slice($distribution,0,1)
返回多维数组。它是一个1元素数组,其第一个元素是
$distribution
的第一个元素。如果只需要
$distribution
的第一个元素,请使用
$distribution[0]

要从数组中分配多个变量,请使用
list()
函数的分配

所以整个事情应该是:

list($common, $uncommon, $rare, $superrare) = $distribution[0];

array\u slice()
不仅返回多维数组,而且还使用
$slice[]
创建了另一个维度

使用
$distribution[0]
除了
列表()
之外,您还有两个选项:

然后您的
foreach()
就能正常工作:

foreach ($cardraritycount as $key => $value){
    $$key = $value;
}
extract()
将数组作为变量:

extract($cardraritycount);

这是一个打字错误,这里有2个
$
$$key=$value?@JeffPuckettII:不,他们正在尝试变量。@Abracadver,哇,谢谢!我刚刚发现,我不知道会发生这样的事。非常感谢你。我只是自学PHP,不知道这个列表。一整天都在为这件事挣扎。谢谢你,成功了。Rajdeep的回答肯定快了一秒钟,但他没有像我一样解释你的代码出了什么问题。
foreach ($cardraritycount as $key => $value){
    $$key = $value;
}
extract($cardraritycount);