If you always have $arrField in the order given above, you could use array_multisort by specifying another array ordered accordingly
$arrField = array(
array("FIELD" => "MOBILE_PHONE", "VALUE" => "1111111"),
array("FIELD" => "HOME_PHONE", "VALUE" => "222222"),
array("FIELD" => "FAX_PHONE", "VALUE" => "333333"),
array("FIELD" => "WORK_PHONE", "VALUE" => "4444444"));
$order = array(3, 2, 0, 1);
array_multisort($order, $arrField);
printf('<pre>%s</pre>', print_r($arrField,1));
And if you do not know the order of the input array
$order = array('FAX_PHONE' => 0, 'WORK_PHONE' => 1, 'HOME_PHONE' => 2, 'MOBILE_PHONE' => 3);
$out = array();
foreach ($arrField as $a)
{
$out[$order[$a['FIELD']]] = $a;
}
ksort($out);
printf('<pre>%s</pre>', print_r($out,1));
Should you have varying amounts of phone numbers for any given type, I'd create one array for each phone type and then [man]array_merge[/man] them into one array.