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
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 に答える
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 に答える
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 に答える