Javascript 根据矩阵B的顺序对矩阵A排序

Javascript 根据矩阵B的顺序对矩阵A排序,javascript,php,arrays,sorting,Javascript,Php,Arrays,Sorting,我想创建一个新数组,该数组等于a(或排序数组a),但顺序为B 我只是在不在数组B中的情况下删除数组A的元素,但它们不会按照数组B的顺序保留在数组A中 我的数组A是: $ array_A [0] ['name'] = Robson; $ array A [0] ['value'] = ROB; $ array_A [1] ['name'] = Morticia; $ array A [1] ['value'] = MORT; $ array_B [0] = "Morticia&

我想创建一个新数组,该数组等于a(或排序数组a),但顺序为B

我只是在不在数组B中的情况下删除数组A的元素,但它们不会按照数组B的顺序保留在数组A中

我的数组A是:

$ array_A [0] ['name'] = Robson;

$ array A [0] ['value'] = ROB;
 
$ array_A [1] ['name'] = Morticia;

$ array A [1] ['value'] = MORT;
$ array_B [0] = "Morticia";
 
$ array_B [1] = "Robson";
$array_A[0]['name'] = Morticia; 

$array_A[0]['value'] = MORT;

$array_A[1]['name'] = Robson; 

$array_A[1]['value'] = ROB;
if(!empty($array_A)){
    if (!empty($obj->allnames)){
        $array_B = explode(",", $obj->allnames); 
        **// You have to sort array_A by array_B
    }
    $x=0;
    foreach ($array_A as $value) {
        if (!empty($array_B)){
            if (!in_array($value->f_name,$array_B)){
                unset($array_A[$x]);
            }
        }
        $x++;
    }
}
我的数组B是:

$ array_A [0] ['name'] = Robson;

$ array A [0] ['value'] = ROB;
 
$ array_A [1] ['name'] = Morticia;

$ array A [1] ['value'] = MORT;
$ array_B [0] = "Morticia";
 
$ array_B [1] = "Robson";
$array_A[0]['name'] = Morticia; 

$array_A[0]['value'] = MORT;

$array_A[1]['name'] = Robson; 

$array_A[1]['value'] = ROB;
if(!empty($array_A)){
    if (!empty($obj->allnames)){
        $array_B = explode(",", $obj->allnames); 
        **// You have to sort array_A by array_B
    }
    $x=0;
    foreach ($array_A as $value) {
        if (!empty($array_B)){
            if (!in_array($value->f_name,$array_B)){
                unset($array_A[$x]);
            }
        }
        $x++;
    }
}
我想创建一个新数组,该数组等于a(或排序数组a),但顺序为B

预期结果:

$ array_A [0] ['name'] = Robson;

$ array A [0] ['value'] = ROB;
 
$ array_A [1] ['name'] = Morticia;

$ array A [1] ['value'] = MORT;
$ array_B [0] = "Morticia";
 
$ array_B [1] = "Robson";
$array_A[0]['name'] = Morticia; 

$array_A[0]['value'] = MORT;

$array_A[1]['name'] = Robson; 

$array_A[1]['value'] = ROB;
if(!empty($array_A)){
    if (!empty($obj->allnames)){
        $array_B = explode(",", $obj->allnames); 
        **// You have to sort array_A by array_B
    }
    $x=0;
    foreach ($array_A as $value) {
        if (!empty($array_B)){
            if (!in_array($value->f_name,$array_B)){
                unset($array_A[$x]);
            }
        }
        $x++;
    }
}
我今天的代码是:

$ array_A [0] ['name'] = Robson;

$ array A [0] ['value'] = ROB;
 
$ array_A [1] ['name'] = Morticia;

$ array A [1] ['value'] = MORT;
$ array_B [0] = "Morticia";
 
$ array_B [1] = "Robson";
$array_A[0]['name'] = Morticia; 

$array_A[0]['value'] = MORT;

$array_A[1]['name'] = Robson; 

$array_A[1]['value'] = ROB;
if(!empty($array_A)){
    if (!empty($obj->allnames)){
        $array_B = explode(",", $obj->allnames); 
        **// You have to sort array_A by array_B
    }
    $x=0;
    foreach ($array_A as $value) {
        if (!empty($array_B)){
            if (!in_array($value->f_name,$array_B)){
                unset($array_A[$x]);
            }
        }
        $x++;
    }
}

如果我没有弄错,您可以使用自定义比较函数,通过
$array\u a
的值查找
$array\u B
中的键,然后进行比较

$array_A[0]['name'] = "Robson";
$array_A[0]['value'] = "ROB";
$array_A[1]['name'] = "Morticia";
$array_A[1]['value'] = "MORT";

$array_B[0] = "Morticia";
$array_B[1] = "Robson";


usort($array_A, function($a, $b) use ($array_B) {
    return array_search($a['name'], $array_B) > array_search($b['name'], $array_B);
});
print_r($array_A);
输出

Array
(
    [0] => Array
        (
            [name] => Morticia
            [value] => MORT
        )

    [1] => Array
        (
            [name] => Robson
            [value] => ROB
        )

)

在PHP7中,还可以使用
太空船操作符

usort($array_A, function($a, $b) use ($array_B) {
    return array_search($a['name'], $array_B) <=> array_search($b['name'], $array_B);
});
usort($array\u A,function($A,$b)use($array\u b){
返回数组搜索($a['name'],$array_B)数组搜索($B['name'],$array_B);
});

如果我没有弄错,您可以使用自定义比较函数,通过
$array\u a
的值查找
$array\u B
中的键,然后进行比较

$array_A[0]['name'] = "Robson";
$array_A[0]['value'] = "ROB";
$array_A[1]['name'] = "Morticia";
$array_A[1]['value'] = "MORT";

$array_B[0] = "Morticia";
$array_B[1] = "Robson";


usort($array_A, function($a, $b) use ($array_B) {
    return array_search($a['name'], $array_B) > array_search($b['name'], $array_B);
});
print_r($array_A);
输出

Array
(
    [0] => Array
        (
            [name] => Morticia
            [value] => MORT
        )

    [1] => Array
        (
            [name] => Robson
            [value] => ROB
        )

)

在PHP7中,还可以使用
太空船操作符

usort($array_A, function($a, $b) use ($array_B) {
    return array_search($a['name'], $array_B) <=> array_search($b['name'], $array_B);
});
usort($array\u A,function($A,$b)use($array\u b){
返回数组搜索($a['name'],$array_B)数组搜索($B['name'],$array_B);
});

为什么要用
Javascript
标记?因为我对php和Javascript进行编码,任何算法都可以帮助我。为什么要用
Javascript
标记?因为我对php和Javascript进行编码,任何算法都可以帮助我。