2013-12-17 45 views
0

我有下面的一組陣列的一個ORM查詢返回在PHP重建索引陣列基於數據庫的主鍵ID

array(
    (int) 0 => array(
     (int) 0 => array(
      'id' => '11', 
      'name' => 'branch11', 
      'code' => '018', 
      'server_name' => '****', 
      'user_name' => 'usr1', 
      'pass_name' => '***', 
      'database_name' => '***', 
      'sct_mapping_code' => '318' 
     ) 
    ), 
    (int) 1 => array(
     (int) 0 => array(
      'id' => '12', 
      'name' => 'Branch1', 
      'code' => '001', 
      'server_name' => 'SRVR1', 
      'user_name' => '****', 
      'pass_name' => '****', 
      'database_name' => '***', 
      'mapping_code' => '301' 
     ) 
    ) 

) 

我需要改變它低於

array 
('11'=> array(
       'name' => 'branch11', 
       'code' => '018', 
       'server_name' => '****', 
       'user_name' => 'usr1', 
       'pass_name' => '***', 
       'database_name' => '***', 
       'sct_mapping_code' => '318' 
      ), 
    '12'=>array(
       'name' => 'Branch1', 
       'code' => '001', 
       'server_name' => 'SRVR1', 
       'user_name' => '****', 
       'pass_name' => '****', 
       'database_name' => '***', 
       'mapping_code' => '301' 
      ) 
) 

我需要做id => 11和id => 12作爲新陣列的索引

+1

使用循環和重新分配新的關鍵 –

回答

1

你可以使用一個簡單的循環,並指定記錄到一個新的數組:

$newArr = array(); 

foreach ($yourArray as $rec) 
{ 
    $id = $rec['id']; 
    unset($rec['id']); 
    $newArr[$id] = $rec; 
} 

unset($yourArray); //you might unset your old array so the garbage collector would free up some memory 
+0

id的值我必須去爲2嵌套循環,這將減緩down腳本\ – sumit

+0

那麼你正在重新分配鍵和修改條目(刪除ID),所以這是一種方法。我不相信你的ORM引擎會自動分配結果集數組鍵。使用相同的陣列重新分配將不起作用,因爲你會碰撞 - 值可能會被覆蓋。 – MaGnetas

+0

你是對的:) – sumit

2

好處是,在PHP中,索引數組,實際上也只是鍵是整數的關聯數組。所以,你可以這樣做簡單,如:

$myArray = array() 

foreach($objects as $obj) { 
     $myArray[(int)$obj->id] = $obj; 
} 

(修改代碼,以滿足您的需求)。