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

时间:2016-04-29 18:27:18

标签: php arrays

此代码应该创建一个多维数组shuffle,选择第一个数组,并将四个值传递给四个不同的变量,称为$ common$uncommon,{{ 1}}和$rare

$superrare

当我查看<?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

当我尝试将Array ( [0] => Array ( [0] => Array ( [0] => 120 [1] => 43 [2] => 17 [3] => 0 ) ) ) $slice结合使用时,当我尝试回显内容时,我没有输出。我认为我的问题是我在做数组切片的时候。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

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

// 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 />";

以下是参考资料:

答案 1 :(得分:4)

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

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

所以整个事情应该是:

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

答案 2 :(得分:1)

array_slice()不仅会返回一个多维数组,而且还会使用$slice[]创建另一个维度。

使用$distribution[0]list()以外还有两个选项:

shuffle($distribution);
$cardrarity = array('common', 'uncommon', 'rare', 'superrare');
$cardraritycount = array_combine($cardrarity, $distribution[0]);

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

foreach ($cardraritycount as $key => $value){
    $$key = $value;
}

extract()数组作为变量:

extract($cardraritycount);