Javascript 根据矩阵B的顺序对矩阵A排序
我想创建一个新数组,该数组等于a(或排序数组a),但顺序为B 我只是在不在数组B中的情况下删除数组A的元素,但它们不会按照数组B的顺序保留在数组A中 我的数组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&
$ 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进行编码,任何算法都可以帮助我。