2016-07-28 61 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