2013-04-23 37 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); 
相关问题