PHP Object Array – Strip Previous Declared Records

I have a bit of strange question, hopefully it makes sense.

So I have the following array of objects

$users_array[] = (object) array('name' => 'Vicky', 'attend' => 'X1 - on');
$users_array[] = (object) array('name' => 'Brian', 'attend' => 'X1 - off');
$users_array[] = (object) array('name' => 'Nick', 'attend' => 'X1 - on');
$users_array[] = (object) array('name' => 'Sarah', 'attend' => 'X2 - off');
$users_array[] = (object) array('name' => 'Vicky', 'attend' => 'X2 - on');
$users_array[] = (object) array('name' => 'Doan', 'attend' => 'X2 - on');
$users_array[] = (object) array('name' => 'Harry', 'attend' => 'X1 - off');
$users_array[] = (object) array('name' => 'Sarah', 'attend' => 'X1 - on');
$users_array[] = (object) array('name' => 'David', 'attend' => 'X2 - on');

Sometimes I only have a couple of objects, but I can have up to 200 in some cases.

If I run

foreach($users_array as $user) :
    echo 'Name: ' . $user->name;
    echo ' | ';
    echo 'In: ' . $user->attend;
    echo '<br>';
endforeach;

I get the following

1. Name: Vicky | In: X1 - on
2. Name: Brian | In: X1 - off
3. Name: Nick | In: X1 - on
4. Name: Sarah | In: X2 - off
5. Name: Vicky | In: X2 - on
6. Name: Doan | In: X2 - on
7. Name: Harry | In: X1 - off
8. Name: Sarah | In: X1 - on
9. Name: David | In: X2 - on

which is great

You will see I have markers titled “X1″ and X2”, so what I want to do is strip any previously declared values, unless a new marker comes into play

So with the above it would return

1. Name: Vicky | In: X1 - on
2. Name: Brian | In: X1 - off
4. Name: Sarah | In: X2 - off
5. Name: Vicky | In: X2 - on
7. Name: Harry | In: X1 - off
8. Name: Sarah | In: X1 - on
9. Name: David | In: X2 - on

So it would strip row 3 because it was already declared on row 1, and it would strip row 6 as it was already declared on row 5

Is this possible?

Thanks so much