Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据php中的其他数组值重新排列数组值_Php_Arrays_Multidimensional Array - Fatal编程技术网

根据php中的其他数组值重新排列数组值

根据php中的其他数组值重新排列数组值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有两个数组(一个是单数组,一个是多维数组) 单个数组“A”看起来像 [questionid] => Array ( [0] => 12 [1] => 13 [2] => 55 [3] => 15 [4] => 16 ) Array ( [0] => Array (

我有两个数组(一个是单数组,一个是多维数组)

单个数组“A”看起来像

[questionid] => Array
        (
            [0] => 12
            [1] => 13
            [2] => 55
            [3] => 15
            [4] => 16
        )
Array
(
    [0] => Array
        (
            [quid] => 12
            [answer] => AAA
        )

    [1] => Array
        (
            [quid] => 13
            [answer] => neighbour
        )

    [2] => Array
        (
            [quid] => 15
            [answer] =>
        )

    [3] => Array
        (
            [quid] => 16
            [answer] =>
        )

     [4] => Array
        (
            [quid] => 55
            [answer] =>
        )
)
多维数组“B”看起来像

[questionid] => Array
        (
            [0] => 12
            [1] => 13
            [2] => 55
            [3] => 15
            [4] => 16
        )
Array
(
    [0] => Array
        (
            [quid] => 12
            [answer] => AAA
        )

    [1] => Array
        (
            [quid] => 13
            [answer] => neighbour
        )

    [2] => Array
        (
            [quid] => 15
            [answer] =>
        )

    [3] => Array
        (
            [quid] => 16
            [answer] =>
        )

     [4] => Array
        (
            [quid] => 55
            [answer] =>
        )
)
现在我希望数组B(quid)的值根据数组A中的值重新排列。因此,在数组B中quid最后一个元素(55)的值位于最末端,而在数组A中,quid最后一个元素(55)的值位于第三位

我希望数组B像这样

Array
(
    [0] => Array
        (
            [quid] => 12
            [answer] => AAA
        )

    [1] => Array
        (
            [quid] => 13
            [answer] => neighbour
        )

    [2] => Array
        (
            [quid] => 55
            [answer] =>
        )

    [3] => Array
        (
            [quid] => 15
            [answer] =>
        )

     [4] => Array
        (
            [quid] => 16
            [answer] =>
        )
)
多维数组的代码是

$ansid = array
(
     array
        (
            "quid" => 12,
            "answer" => "AAA"
        ),

     array
        (
            "quid" => 13,
            "answer" => "neighbour"
        ),

     array
        (
            "quid" => 15,
            "answer" =>""
        ),
     array
        (
            "quid" => 16,
            "answer" =>""
        ),

     array
        (
            "quid" => 55,
            "answer" =>""
        )
);

使用
array\u walk()
为了更具说明性,您可以

$newB=array()
foreach ($arrayB as $b) $newB[$b['quid']]=$b;
$newA=array()
foreach ($arrayA as $k=>$v) $newA[$k]=$newB[$v]
//$newA has the required structure

使用用户排序功能:

$single_array = ...; // order by the index of this array
$mult_dim_array = ...; // to be ordered by the 'quid' value of the elements

function my_comp($a, $b) {
    return array_search($a['quid'], $single_array ) - array_search($b['quid'], $single_array );
}

usort($mult_dim_array, "my_comp");
这将获得第一个数组上的索引,以确定哪个元素先到还是后到。函数将
$single_array
读取为全局变量(在函数外部定义)


谢谢,但我不知道为什么我会收到多维数组的“警告:非法偏移类型”。我在问题中发布了结构。我太愚蠢了。请忽略我最后的评论。你的解决方案太棒了。现在我需要理解了。非常感谢你的帮助。