2016-07-27 11 views
0

私はStdClass配列を持っています。各オブジェクトは、(配列内の約50のオブジェクトがありますが、私はちょうど構造を示すために1を入れしようと思いました)このように命じている。StdClassオブジェクト配列を別の配列の値でソートする

stdClass Object (
    [display_name] => Bob Simons 
    [post_title] => Lesson 1 
    [meta_value] => 100 
    [comment_approved] => passed 
    [c_num2] => 26 
    [term_id] => 3 
) 

を私はこのようになります別の配列を持っています

Array ( 
    [0] => 3 
    [1] => 4 
    [2] => 5 
    [3] => 16 
    [4] => 17 
    [5] => 18 
    [6] => 19 
    [7] => 20 
    [8] => 21 
) 

[2番目の配列は[term_id]フィールドに基づいて最初の配列のソートを定義します。したがって、[term_id] 3を持つものはすべて配列の先頭になければなりません。[term_id] 4を持つものはすべて、その2番目の配列に基づいていなければなりません。

私はこのことをどうやって理解するのが必死かと思っています。私はusortなどを見ていましたが、完全な損失でした。

誰かが助けてくれて本当に感謝してくれることを願っています。

+0

場合term_idは常に順昇順の方法で、あなたはusortを使用することができますでしょうか? –

答えて

0

試してみてください。この

$sortedArray = []; 
foreach ($order as $termId) { 
    foreach ($objects as $object) { 
     if ($object->term_id == $termId) { 
      $sortedArray[] = $object; 
     } 
    } 
} 

$objectsは、注文した用語のidを使用してstdClassのインスタンスと$orderあなたのリストを保持しています。あなたの代わりに事実の後にそれをソートの順で最初の配列を、構築できる

usort($objects, function ($obj1, $obj2) { 
    if ($obj1->term_id == $obj2->term_id) { 
     return 0; 
    } 
    return ($obj1->term_id < $obj2->term_id) ? -1 : 1; 
}); 
関連する問題