function check(array $p, array $a)
{
$stack = new SplStack();
foreach (array_reverse($a) as $i) {
$stack->push($i);
}
$top = $stack->pop();
foreach ($p as $i) {
if ($i == $top) {
if ($stack->isEmpty()) {
return true;
}
$top = $stack->pop();
}
}
return $stack->isEmpty();
}
assert(check($pattern, $ar));
assert(!check($pattern, $arFail));