php-根据第二个给定数组对数组进行排序

php-根据第二个给定数组对数组进行排序,php,arrays,Php,Arrays,因此,数组$a应该根据数组$b进行排序,$resultArray应该是('val1'、'val2',200、230、234、242、179)您的排序要求: 排序数组中未找到的值位于找到的值之前 然后: 按其在排序数组中的位置对找到的值进行排序 在排序数组中找不到正常/升序排序值 翻转订单查找数组将提高处理效率,而在php中,键搜索比值搜索更快 代码:() $keyedOrder[$variable]-1有效地表示如果在查找中找不到该值,则使用-1将项目定位在查找数组中的最低值之前(0)。如果在

因此,数组$a应该根据数组$b进行排序,$resultArray应该是('val1'、'val2',200、230、234、242、179)

您的排序要求:

  • 排序数组中未找到的值位于找到的值之前
  • 然后:
  • 按其在排序数组中的位置对找到的值进行排序
  • 在排序数组中找不到正常/升序排序值
  • 翻转订单查找数组将提高处理效率,而在php中,键搜索比值搜索更快

    代码:()

    $keyedOrder[$variable]-1
    有效地表示如果在查找中找不到该值,则使用
    -1
    将项目定位在查找数组中的最低值之前(
    0
    )。如果在查找中找到该值作为键,则在查找中使用分配给该键的整数值


    在PHP7.4中,可以使用箭头函数语法使代码段更加简洁,并避免
    use()
    声明

    usort($array,fn($a,$b)=>[$keyedOrder[$a]??-1,$a][$keyedOrder[$b]??-1,$b]);
    
    你想对数组进行排序吗?是的,从数组中按数组排序的值,如果A中的值不在B中,则不考虑,如果有额外的值,那么A中的值的顺序不应该改变。
    $a = array('val1','val2',200, 179,230, 234, 242); 
    $b = array(230, 234, 242, 179, 100);
    
    $array = ['val1', 'val2', 200, 179, 230, 234, 242]; 
    $order = [230, 234, 242, 179, 100];
    $keyedOrder = array_flip($order); // for efficiency
    
    usort($array, function($a, $b) use ($keyedOrder) {
        return [$keyedOrder[$a] ?? -1, $a]
               <=>
               [$keyedOrder[$b] ?? -1, $b];
    });
    var_export($array);
    
    array (
      0 => 'val1',
      1 => 'val2',
      2 => 200,
      3 => 230,
      4 => 234,
      5 => 242,
      6 => 179,
    )
    
    usort($array, fn($a, $b) => [$keyedOrder[$a] ?? -1, $a] <=> [$keyedOrder[$b] ?? -1, $b]);