Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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_Sorting - Fatal编程技术网

PHP:根据另一个数组对数组进行排序

PHP:根据另一个数组对数组进行排序,php,arrays,sorting,Php,Arrays,Sorting,我在php中遇到了一个问题,我尝试过搜索,但我只是变得更加困惑。我需要使用“priority”键值根据另一个数组对数组进行排序 这是我需要的过滤顺序 $custom_order = array( array('priority' => 0, 'field_id' => 'password'), array('priority' => 1, 'field_id' => 'username') ); 这就是需要过滤的数组 $default_order = a

我在php中遇到了一个问题,我尝试过搜索,但我只是变得更加困惑。我需要使用“priority”键值根据另一个数组对数组进行排序

这是我需要的过滤顺序

$custom_order = array(
    array('priority' => 0, 'field_id' => 'password'),
    array('priority' => 1, 'field_id' => 'username')
);
这就是需要过滤的数组

$default_order = array(
    'name' => array(
        'username' => array(
            'type'        => 'text',
            'priority'    => 0
        ),
        'password' => array(
            'type'        => 'password',
            'priority'    => 1
        ),
    ),
);
这是我想要的订单

$final_order = array(
    'name' => array(
       'password' => array(
            'type'        => 'password',
            'priority'    => 0
        ),
        'username' => array(
            'type'        => 'text',
            'priority'    => 1
        ),
    ),
);
我很困惑,我不确定我应该使用uasort还是array_intersect,通过阅读其他关于它的文章,我更困惑了。有人能解释一下我如何用这种方式对数组进行排序吗


非常感谢。

如果优先级是实际的排序标准,那么usort将是一种简单的方法:

usort( $array['name'], function($a, $b) {
    return ($a->priority < $b->priority) ? -1 : 1;
});
然后将更新的优先级分配给$default项:

$final_order = array();
foreach ($default_order as $item) {
    $item->priority = $priorities[$item->type];
}
然后执行最初建议的排序,以按优先级顺序获取它们:

usort( $final_order['name'], function($a, $b) {
    return ($a->priority < $b->priority) ? -1 : 1;
});
usort($final_order['name'],函数($a,$b){
返回($a->优先级<$b->优先级)?-1:1;
});

对不起,也许我解释得不好。我用一个更合适的例子更新了我的问题。是的,“优先级”是我想使用的比较值。我希望$default\u顺序根据设置为$custom\u顺序的“优先级”进行排序
usort( $final_order['name'], function($a, $b) {
    return ($a->priority < $b->priority) ? -1 : 1;
});