Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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,我不好意思问这个问题,所以我会尽快回答 我有一个数组,看起来像这样: array (size=11) 0 => string 'create' (length=6) 1 => string 'index' (length=5) 2 => string 'restore' (length=7) 3 => string 'renew' (length=5) 4 => string 'check' (length=5) 5 => string

我不好意思问这个问题,所以我会尽快回答

我有一个数组,看起来像这样:

array (size=11)
  0 => string 'create' (length=6)
  1 => string 'index' (length=5)
  2 => string 'restore' (length=7)
  3 => string 'renew' (length=5)
  4 => string 'check' (length=5)
  5 => string 'transfer' (length=8)
  6 => string 'delete' (length=6)
  7 => string 'update' (length=6)
我想对它进行排序,使它看起来像:

array (size=...)
  1 => string 'index' (length=5)
  2 => string 'update' (length=6)
  3 => string 'renew' (length=5)
  and all other values no matter which order
我没有要排序的规则,我只有输出模型数组

我试过了,但我不知道在闭包里写什么:

$modelMenu = array('index', 'update', 'renew');

$myCustomFilter = function($a, $b) use ($modelMenu) {
     var_dump($a, $b);
};

 usort($list, $myCustomFilter);

谢谢。

不需要排序:

$list = array(
  0 => 'create'
  ,1 => 'index'
  ,2 => 'restore'
  ,3 => 'renew'
  ,4 => 'check'
  ,5 => 'transfer'
  ,6 => 'delete'
  ,7 => 'update'
);
$modelMenu = array('index', 'update', 'renew');
$list = array_diff($list,$modelMenu); //Filter out elements in $modelMenu from $list
$list = array_merge($modelMenu,$list); //Put the $modelMenu elements back in at the beginning
echo '<pre>'.print_r($list,true).'</pre>';

以下内容应满足您的需要。它按
$modelmmenu
中的位置进行排序


用于此目的您想对第一个数组进行排序,使其看起来像第二个数组吗?@FayeqAliKhan谢谢,这样做确实很简单。完美;-)
Array
(
    [0] => index
    [1] => update
    [2] => renew
    [3] => create
    [4] => restore
    [5] => check
    [6] => transfer
    [7] => delete
)
$myCustomFilter = function($a, $b) use ($modelMenu) {
    $aSortOrder = array_search($a, $modelMenu);
    $bSortOrder = array_search($b, $modelMenu);
    if($aSortOrder === false){
        $aSortOrder = count($modelMenu);
    }
    if($bSortOrder === false){
        $bSortOrder = count($modelMenu);
    }
    return $aSortOrder-$bsortOrder;
};