2013-04-23 3 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(), но вы должны быть в состоянии определить правила заказа - и вы не явно выразить то, что они должны быть в вашем посте –

+0

Было бы проще, если бы вы пост var_export() результат массива вместо print_r() – hegemon

+0

Вы хотите изменить «место» двух элементов? Это вопрос? – bestprogrammerintheworld

ответ

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

0

Вы можете отсортировать массив с помощью специальной функции сортировки. Код:

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

Попробуйте это, я создал пример здесь

http://codepad.org/z4oI9KHk

+0

, это не сортировка по ASC или DESC., См. Мой последний комментарий, например, например (value = x). – kumar

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); 
Смежные вопросы