2014-11-17 4 views
1

я есть многомерный массив так:Изменение многомерного массива

Array 
(
    [Members] => Array 
     (
      [0] => Array 
       (
        [id] => 1 
        [name] => John 
       ) 

      [1] => Array 
       (
        [id] => 3 
        [name] => Mark 
       ) 

      [2] => Array 
       (
        [id] => 4 
        [name] => Paul 
       ) 

      [3] => Array 
       (
        [id] => 2 
        [name] => Robert 
       ) 

     ) 

) 

Можно изменить положение имя = Павла в верхней части массива?

выход должен быть

Array 
(
    [Members] => Array 
     (
      [0] => Array 
       (
        [id] => 4 
        [name] => Paul 
       ) 

      [1] => Array 
       (
        [id] => 1 
        [name] => John 
       ) 

      [2] => Array 
       (
        [id] => 3 
        [name] => Mark 
       ) 

      [3] => Array 
       (
        [id] => 2 
        [name] => Robert 
       ) 

     ) 

) 

Спасибо!

+0

я так думаю, но почему? – gvgvgvijayan

+2

Да .. значение swap от вершины массива до значения массива, содержащего «Пол»! –

+0

как? Можете ли вы привести мне пример? пожалуйста –

ответ

2

Вы можете искать Павла, а затем создать временный держатель для Павла, снята с охраны Павла в исходном массиве затем unshift Павла внутри снова, так что он придумает верх:

$array = [ 
    'Members' => [ 
     ['id' => 1, 'name' => 'John'], 
     ['id' => 3, 'name' => 'Mark'], 
     ['id' => 4, 'name' => 'Paul'], 
     ['id' => 2, 'name' => 'Robert'],  
    ] 
]; 

$name = 'Paul'; 
$temp = []; 
foreach ($array['Members'] as $k => $value) { 
    if($name == $value['name']) { // search for paul, if found 
     $temp = $value; // put him inside temporarily 
     unset($array['Members'][$k]); // remove paul 
    } 
} 

array_unshift($array['Members'], $temp); // then put paul up top 

echo '<pre>'; 
print_r($array); 

Simple output

Смежные вопросы