Php 2个具有不同值的不同数组
我的问题听起来可能有点傻,但我知道这是可能的。实际上,我正试图使mysql中的数组与我已经使用的数组shuffle不同。我想维护数组键,只是不同顺序的值 举个例子 MYSQL中的数组:Php 2个具有不同值的不同数组,php,arrays,Php,Arrays,我的问题听起来可能有点傻,但我知道这是可能的。实际上,我正试图使mysql中的数组与我已经使用的数组shuffle不同。我想维护数组键,只是不同顺序的值 举个例子 MYSQL中的数组: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 ) Array ( [0] =&
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
)
Array
(
[0] => 3
[1] => 7
[2] => 8
[3] => 4
[4] => 1
[5] => 2
[6] => 5
[7] => 6
)
function get_random_elements($array) {
$ori_array = $array;
echo "<pre>";
print_r($ori_array);
echo "</pre>";
shuffle($array);
echo "<pre>";
print_r($array);
echo "</pre>";
for($x=0; $x<count($array); $x++) {
if ($array[$x] == $ori_array[$x])
{
$dupliarray[] = "Array value: ".$array[$x]." Key :".$x;
unset($array[$x]);
}
}
echo "<pre>";
print_r($dupliarray);
echo "</pre>";
}
$mysql_array = array(0=>'1',1=>'2',2=>'3',3=>'4',4=>'5',5=>'6',6=>'7',7=>'8');
get_random_elements($mysql_array);
洗牌后的数组:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
)
Array
(
[0] => 3
[1] => 7
[2] => 8
[3] => 4
[4] => 1
[5] => 2
[6] => 5
[7] => 6
)
function get_random_elements($array) {
$ori_array = $array;
echo "<pre>";
print_r($ori_array);
echo "</pre>";
shuffle($array);
echo "<pre>";
print_r($array);
echo "</pre>";
for($x=0; $x<count($array); $x++) {
if ($array[$x] == $ori_array[$x])
{
$dupliarray[] = "Array value: ".$array[$x]." Key :".$x;
unset($array[$x]);
}
}
echo "<pre>";
print_r($dupliarray);
echo "</pre>";
}
$mysql_array = array(0=>'1',1=>'2',2=>'3',3=>'4',4=>'5',5=>'6',6=>'7',7=>'8');
get_random_elements($mysql_array);
如果您注意到,MYSQL数组
键3的值与shuffle数组
的值相同,我希望它有所不同。我怎样才能做到
这是我的代码:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
)
Array
(
[0] => 3
[1] => 7
[2] => 8
[3] => 4
[4] => 1
[5] => 2
[6] => 5
[7] => 6
)
function get_random_elements($array) {
$ori_array = $array;
echo "<pre>";
print_r($ori_array);
echo "</pre>";
shuffle($array);
echo "<pre>";
print_r($array);
echo "</pre>";
for($x=0; $x<count($array); $x++) {
if ($array[$x] == $ori_array[$x])
{
$dupliarray[] = "Array value: ".$array[$x]." Key :".$x;
unset($array[$x]);
}
}
echo "<pre>";
print_r($dupliarray);
echo "</pre>";
}
$mysql_array = array(0=>'1',1=>'2',2=>'3',3=>'4',4=>'5',5=>'6',6=>'7',7=>'8');
get_random_elements($mysql_array);
函数获取随机元素($array){
$ori_数组=$array;
回声“;
打印(ori_数组);
回声“;
洗牌($数组);
回声“;
打印(数组);
回声“;
对于($x=0;$x'1',1=>'2',2=>'3',3=>'4',4=>'5',5=>'6',6=>'7',7=>'8');
获取随机元素($mysql\u数组);
一种解决方案是洗牌阵列,直到它与源阵列完全不同:
$sourceArray=[0,1,2,3,4,5,6,7,8];
$shuffledArray=$sourceArray;//因为函数shuffle将更改传递的数组
洗牌($shuffledArray);
而(计数(数组相交关联($sourceArray,$shuffledArray))){
洗牌($shuffledArray);
}
回声';
var_dump($sourceArray,$shuffledArray);
一种解决方案是洗牌阵列,直到它与源阵列完全不同:
$sourceArray=[0,1,2,3,4,5,6,7,8];
$shuffledArray=$sourceArray;//因为函数shuffle将更改传递的数组
洗牌($shuffledArray);
而(计数(数组相交关联($sourceArray,$shuffledArray))){
洗牌($shuffledArray);
}
回声';
var_dump($sourceArray,$shuffledArray);
我建议使用以下变体:
我建议采用这种变体:
递归调用
get_random_elements
函数,直到(count($dupliarray)为0)得到与原始数组完全不同的数组。@Naga-Hmm…是的,但如何递归调用?递归调用get_random_elements
函数,直到(count($dupliarray)为0)您得到的数组与原始数组完全不同。@Naga-Hmm…是的,但如何递归调用?