0

我如何一次在两个多维数组上应用自定义函数(洗牌函数)?

我有这个脚本:

    function customShuffle(array &$array) {
    $firstElement = array_shift($array);
    shuffle($array);
    array_unshift($array, $firstElement);
}

$array = array(
  array("Bird", "Brown", "Bear", "Bangkok", "Bat"),
  array("Carrot", "Cat", "Crispy", "Cross", "Cable"),
  array("All", "Apple", "Adam", "Apart", "Air")
);

array_walk($array, function (&$array) { customShuffle($array); });
shuffle($array);

并假设$array2是:

 $array2 = array(
  array(1, 2, 3, 4, 5),
  array(10, 20, 30, 40, 50),
  array(100, 200, 300, 400, 500),
);

问题是customfunction仅应用于$array,但是如果我有另一个数组$array2,我想同时customfunction在其上应用相同的函数以在两个数组上获得和谐改组呢?

4

1 回答 1

0

类似的东西

$array = ...
$array2 = ...
$array_keys = sub_array_keys($array);

array_walk($array_keys, function (&$array_keys) { customShuffle($array_keys); });
shuffle_assoc($array_keys);

$array = sort_sub_array_by_array($array, $array_keys);
$array2 = sort_sub_array_by_array($array2, $array_keys);

function sub_array_keys($array)
{
    $result = array();
    foreach($array as $key => $sub_array)
    {
        $result[$key] = array_keys($sub_array);
    }
    return $result;
}

function sort_sub_array_by_array($array, $array_keys)
{
    $result = array();
    foreach($array_keys as $key_1 => $sub_array_keys)
    {
        foreach($sub_array_keys as $key_2)
        {
            $result[$key_1][$key_2] = $array[$key_1][$key_2];
        }
    }
    return $result;
}

function shuffle_assoc(&$array)
{
    $keys = array_keys($array);

    shuffle($keys);

    foreach($keys as $key) {
        $new[$key] = $array[$key];
    }

    $array = $new;

    return true;
}
于 2013-05-31T19:29:05.510 回答