简体   繁体   中英

Remove element from an array

Hello I am looking for some help with removing an element from an array. My array $rooms holds events per rooms. Each room has its own array and each event has its own array within the room array. I loop through $rooms and display the room ID and within this loop I loop through the events for that room and display their contents. I would like to remove the array for the event that has been displayed so I don't have spend time comparing it when I repeat the same loop.

Below is an example of the process I am describing. I know it makes no sense to delete the element in this logic as I am using foreach, but within my application the logic of the function requires it..

$rooms

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" 
             } 
          }  
      } 
}

loop

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

If you could tell me where within the foreach I should put the code and how should the code look like that would be really great. I think it should be right after echo $event['lname'] , but I can't figure out how to locate the element that is displayed so I can unset it..

Thank you all for reading, looking forward to your replies.

You can simply unset the event after echoing it, but you'll need to reference it from $rooms, so you need to use the key's at each level. Try this:

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

You can see an example of it working here .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM