Php 2个具有不同值的不同数组

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] =&

我的问题听起来可能有点傻,但我知道这是可能的。实际上,我正试图使mysql中的数组与我已经使用的数组shuffle不同。我想维护数组键,只是不同顺序的值

举个例子

MYSQL中的数组:

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…是的,但如何递归调用?