yeah i would just build a new copy of the array
also, you may be using strpos wrong.
you need to check the result using either === or !== operators to explicitly check for true or false.
for example
if (strpos('a', 'a')) {
echo 'found it';
}
doesnt work, because it returns position 0, and 0 evaluates to false.
foreach ($orig_arr as $val) {
if (false === strpos($val, $needle)) {
$new_arr[] = $value;
}
}