2014-05-03 24 views
0

我有以下阵列:PHP - 更新多维数组值,其中关键

$sections = array(
       0 => array(
        'id' => 'betrothed_details', 
        'name' => 'About us', 
        'order' => '1', 
        'menu_name' => '', 
        'display' => '1' 
       ), 
       1 => array(
        'id' => 'events', 
        'name' => 'Events', 
        'display' => '1', 
        'order' => '2', 
        'menu_name' => '' 
       ), 
       2 => array(
        'id' => 'gallery', 
        'name' => 'Gallery', 
        'order' => '3', 
        'menu_name' => '', 
        'display' => '1' 
       ), 
      ); 

我创建拖放排序,wchich传递ID的正确的顺序,像

$ids = array('events','betrothed_details','gallery') 

对于每$ ids数组我需要更改$sections数组中适当的order值。

$i = 1; 
foreach ($ids as $id) { 

    CHANGE THE ORDER VALUE HERE to $i 
    $i++; 
} 

这是如何完成的?

+0

第一你不需要$ I = 0; $ I ++;在foreach它只是完成阵列的最后一个变量 –

+0

我编辑的问题,使其更清楚为什么我有$我在那里.. – user1049961

回答

2

试试这个:

<?php 

$sections = array(
    0 => array(
     'id' => 'betrothed_details', 
     'name' => 'About us', 
     'order' => '1', 
     'menu_name' => '', 
     'display' => '1' 
    ), 
    1 => array(
     'id' => 'events', 
     'name' => 'Events', 
     'display' => '1', 
     'order' => '2', 
     'menu_name' => '' 
    ), 
    2 => array(
     'id' => 'gallery', 
     'name' => 'Gallery', 
     'order' => '3', 
     'menu_name' => '', 
     'display' => '1' 
    ), 
); 
$ids = array('events', 'betrothed_details', 'gallery'); 
$sorted_sections = array(); 
foreach ($ids as $id) { 
    foreach ($sections as $section) { 
     if ($section['id'] == $id) { 
      $sorted_sections[] = $section; 
      break; 
     } 
    } 
} 
print_r($sorted_sections); 

Demo Link