How about you sort the array, and anything less than 1000000000 or strlen === 10 you move to the other array?
PHP Code:
$arr1 = array(
"6263888445",
"3134003757",
"100",
"985415628", "1",
);
$arr2 = array();
sort($arr1);
foreach( $arr1 as $k => $a){
if ( strlen($a) < 10 ){
$arr2[] = $a ;
unset($arr1[$k]);
}
if(strlen($a) === 10) continue ; // drop out of the loop as soon as a 10 figure amt is found
}
var_dump($arr1);
var_dump($arr2);
array
3 => string '3134003757' (length=10)
4 => string '6263888445' (length=10)
array
0 => string '1' (length=1)
1 => string '100' (length=3)
2 => string '985415628' (length=9)
EDIT
This way you avoid having to run a regex in a loop, and you only perform the check on the top part of the sorted array, when it discovers a 10 char figure it quits.
Bookmarks