You can use array_intersect for this, but you have to be a bit careful.
If the array to match has no duplicates, you can use
// The order of the arrays matters!
$isSubset = count(array_intersect($array2, $array1)) == count($array2);
However this will not work if e.g. $array2 = array(4, 4). If duplicates are an issue, you need to also use array_unique:
$unique = array_unique($array2);
// The order of the arrays matters!
$isSubset = count(array_intersect($unique, $array1)) == count($unique);
The reason that the order of the arrays matters is that the array given as the first parameter to array_intersect must have no duplicates. If the parameters are switched around this requirement will move from $array2 to $array1, which is important as it can change the behavior of the function.