2016-07-28 23 views
0

內壓倒一切的目標我有對象形式的數據庫的陣列象下面這樣:意想不到的變化 - 的foreach PHP

array(3) { 
    [1]=> 
    array(2) { 
    [0]=> 
    object(stdClass)#99 (3) { 
     ["id"]=> 
     string(2) "42" 
     ["name"]=> 
     string(4) "NAME1" 
     ["type"]=> 
     string(1) "6" 
    } 
    [1]=> 
    object(stdClass)#98 (3) { 
     ["id"]=> 
     string(3) "146" 
     ["name"]=> 
     string(3) "STH1" 
     ["type"]=> 
     string(1) "2" 
    } 
    } 
    [2]=> 
    array(2) { 
    [0]=> 
    object(stdClass)#97 (3) { 
     ["id"]=> 
     string(2) "422" 
     ["name"]=> 
     string(4) "NAME2" 
     ["type"]=> 
     string(1) "3" 
    } 
    [1]=> 
    object(stdClass)#96 (3) { 
     ["id"]=> 
     string(3) "16" 
     ["name"]=> 
     string(3) "STH2" 
     ["type"]=> 
     string(1) "2" 
    } 
    } 
    [3]=> 
    array(2) { 
    [0]=> 
    object(stdClass)#95 (3) { 
     ["id"]=> 
     string(2) "11" 
     ["name"]=> 
     string(4) "NAME3" 
     ["type"]=> 
     string(1) "5" 
    } 
    [1]=> 
    object(stdClass)#94 (3) { 
     ["id"]=> 
     string(3) "69" 
     ["name"]=> 
     string(3) "STH3" 
     ["type"]=> 
     string(1) "3" 
    } 
    } 
} 

如果我想同一個對象添加到其類型的下一個陣列和變化值,我重寫當前對象。我該如何解決它?我下面的foreach循環:

foreach($events as $key => $event){ 
    foreach($event as $k => $v){ 
     if($v->type == 6){ 
      $v->type = "0"; 
      $events[$key+1][] = $v; 
      $v->type = "6"; 
     } 
    } 
} 
+0

目前尚不清楚你想要達到的目的。 – StormRideR

+0

我想複製對象形式$ events [1] [0]到$ events [2] [2]與不同類型(例如'0') – jdoe

+0

這個問題與SQL有什麼關係? –

回答

0

如果我的猜測是你要實現的目標是正確的,我會去這樣

foreach($events as $key => $event){ 
    foreach($event as $k => $v){ 
     if($v->type == 6){ 
      $tmp = $v; 
      $tmp->type="0"; 
      $events[$key+1][] = $tmp; 
     } 
    } 
} 
+0

的任何更改 - 它也覆蓋第一個對象! – jdoe

+0

@jdoe所以我認爲你的問題在別的地方,第一個問題是有幾個對象具有相同的ID。如果您使用id爲事件索引列,則會使用相同ID和不同類型的secound實例更新舊條目 – StormRideR

+0

我已經找到解決方案: http://stackoverflow.com/a/185939/6648280 – jdoe