4
$original_ids = array(1, 2, 3, 4); //<--- Original values without sorted.
$sorted_ids = array(4, 1, 3); //<--- Fixed values (sort by this)
$result_ids = array(); //<--- The result array after sorted

我只想重新检查匹配的数组并排序$sorted_ids(如果你理解的话)

$result_ids 必须是... array(4, 1, 3, 2)2不在 $original_ids 数组中,所以把它放在最后

我绑定到类似...的代码:

foreach ($sorted_ids as &$id) {
    if (in_array($id , $original_ids)) {
        $result_ids[] = $id;
    } else {

    }
}

但我不知道如何将不匹配的数组推送到 $result_ids 数组的最后一个。

不明白就评论。

4

5 回答 5

1
$result_ids = array_merge(
   array_intersect($sorted_ids, $original_ids),  // the values that match sorter
   array_diff($original_ids, $sorted_ids)        // append the rest
);
于 2013-02-25T13:09:30.307 回答
1
foreach ($sorted_ids as $id) {
    if (in_array($id , $original_ids)) {
        $result_ids[] = $id;
    } else {
        $addToEnd[] = $id
    }
}

array_merge($result_ids, $addToEnd);

顺便说一句,您的使用&$id是毫无意义的,因为您推动了它的价值。你不需要参考。

于 2013-02-25T13:05:38.163 回答
1
array_merge($sorted_ids, array_diff($original_ids, $sorted_ids))
于 2013-02-25T13:08:30.673 回答
0
$original_ids = array(1, 2, 3, 4); 
$sorted_ids = array(4, 1, 3);
foreach($original_ids as $key=>$val){
    if(in_array($val,$sorted_ids)){
       unset($original_ids[$key]);
    }
}

$result_ids = array_merge($sorted_ids,$original_ids);

print_r($result_ids);
于 2013-02-25T13:07:06.767 回答
0

您可以使用此代码:

<?php

foreach ($sorted_ids as &$id) {
    if (sort($id)) {
        $result_ids[] = $id;
    } else {

    }
}

?>

它会做你需要的

于 2013-02-25T13:13:06.373 回答