2013-04-23 71 views
1

我有這樣的使特定元素是先在陣列

$arrList = Array ( 
    [0] => Array 
     (
      [master] => Array 
       (
        [id] => 3 
        [name] => Test 
       ) 
     ) 

    [1] => Array 
     (
      [master] => Array 
       (
        [id] => 4 
        [name] => Sample 
       ) 
     ) 
) 

數組現在,我知道id的價值,我怎麼能與id特定的價值進行重新安排是頂部..(即,無論的id,我在,應該是在陣列頂部的變量,如果我得到的id爲4值的值,則該數組應該是

$arrList = Array ( 
     [0] => Array 
      (
       [master] => Array 
        (
         [id] => 4 
         [name] => Sample 
        ) 
      ) 

     [1] => Array 
      (
       [master] => Array 
        (
         [id] => 3 
         [name] => Test 
        ) 
      ) 
    ) 

感謝提前..

+0

通過整理,利用usort(),但你需要能夠定義排序規則 - 你也不會明顯地表達應該是什麼在您的文章 – 2013-04-23 06:47:48

+0

,如果你發佈var_export它會更容易()數組的結果而不是print_r() – hegemon 2013-04-23 06:51:30

+0

你想要改變兩個元素的「地點」嗎?這是個問題嗎? – bestprogrammerintheworld 2013-04-23 07:05:49

回答

1

剛剛嘗試這個代碼

foreach($arrList as $Key => $array) { 
    if($id == $array['master']['id']){ //check the value with all [master][id] 
     $arr[] = $array; // setting up the respective array to another array 
     $iKey = $Key; // getting the key value of that particular array 
    } 
} 
if(isset($iKey) && $iKey != NULL){ 
    unset($arrList[$iKey]); // removing the key value from the main array 
    array_splice($arrList, 0, 0, $arr); 
    //using this function setting up again the array to the 0th index, 
} 

任何其他指標值,何況作爲第二個參數在上面的函數中,假設你需要有第三個索引那麼它應該是..

array_splice($arrList, 3, 0, $arr); 
+0

謝謝你的回答,它幫了我很多.. – kumar 2013-04-23 10:48:48

0

您可以使用特殊排序功能對數組進行排序。該代碼是:這裏

usort($array, function($a,$b){ return $b['master']['id']==4; }); 
0

試試這個,我已經創造例如

http://codepad.org/z4oI9KHk

+0

之前的位置如何,它不是由ASC或DESC排序,請參閱我最近的評論,例如like(value = x)。 – kumar 2013-04-23 07:26:46

1
function cmp($a, $b) 
{ 
    if ($a['master']['id'] == $b['master']['id']) { 
     return 0; 
    } 

    return ($a['master']['id'] > $b['master']['id']) ? -1 : 1; 
} 


$a = Array ( 
     0 => Array (
      'master' => Array 
       (
        'id' => 3, 
        'name' => 'Test', 
       ) 
     ), 

    '1' => Array 
     (
      'master' => Array 
       (
        'id' => 4, 
        'name' => 'Sample', 
       ) 
     ) 
); 

usort($a, "cmp"); 


print_r($a);