That's sort of roundabout since you can just do this directly (the player should be valid in the tick the event fires so there's no need to check)
PHP Code:
public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new UserId = GetEventInt(event, "userid");
CreateTimer(0.2, Timer_Remove_Weapons, UserId);
}
but yeah, that's the general idea.
You don't really need to use userids in your case since the worst case scenario is that another client who just joined gets their weapons removed which would've happened anyway when they spawned, but in other cases it can potentially lead to very weird bugs, so it's good general practice.
Also, while logical AND intuitively seems like a symmetric relation (A && B is the same as B && A), lazy evaluation means that it's not, at least in terms of side effects: If you have A && B and A is false, there's no need to evaluate B, so it doesn't. This is important when A checks the validity of something B relies on, e.g. in the case of IsValidClient(client) && Client_HasWeapon(client, "weapon_knife"). If you swap the order, it no longer works.
In a language with eager evaluation, like PHP, you'd have to do
PHP Code:
if (IsValidClient(client))
{
if (Client_HasWeapon(client, "weapon_knife"))
{
...
}
}