从数组中删除元素

时间:2014-04-22 13:28:41

标签: php arrays

您好我正在寻找一些从数组中删除元素的帮助。我的数组$rooms包含每个房间的事件。每个房间都有自己的阵列,每个活动在房间阵列中都有自己的阵列。我遍历$rooms并显示房间ID,在此循环中,我循环播放该房间的事件并显示其内容。我想删除已经显示的事件的数组,因此当我重复相同的循环时,我没有花时间比较它。

以下是我所描述的流程示例。我知道删除这个逻辑中的元素是没有意义的,因为我使用的是foreach,但在我的应用程序中,函数的逻辑需要它。

$室

array(3) 
{ 
  [1]=> array(2) 
    { 
       ["rid"]=> string(1) "1" 
       ["events"]=> array(0) 
         { } 
    } 
  [2]=> array(2) 
    { 
       ["rid"]=> string(1) "2" 
       ["events"]=> array(0) 
         { } 
    } 
  [3]=> array(2) 
    { 
       ["rid"]=> string(1) "3" 
       ["events"]=> array(2) 
         { 
           [0]=> array(7) 
             { 
               ["lname"]=> string(20) "xxxxxxxxxxxxxxxxxxxx" 
             } 
           [1]=> array(7) 
             { 
               ["lname"]=> string(10) "yyyyyyyyyy" 
             } 
          }  
      } 
}

循环

foreach ($rooms as $room):
   echo $room['rid'];
   foreach ($room['events'] as $event):
       echo $event['lname'];

如果你能告诉我foreach我应该把代码放在哪里,代码应该怎么样才会真的很棒。我认为它应该在echo $event['lname']之后,但我无法弄清楚如何找到显示的元素,以便我可以取消它..

谢谢大家的阅读, 期待你的回复。

1 个答案:

答案 0 :(得分:1)

您可以在回显之后简单地取消设置事件,但是您需要从$ rooms引用它,因此您需要在每个级别使用键。试试这个:

foreach($rooms as $i => $room) {
    echo $room['rid'];
    foreach($room['events'] as $j => $event) {
        echo $event['lname'];
        unset($rooms[$i]['events'][$j]);
    }
}

您可以看到它的一个示例here