Проблема в том, что для первого и второго куска кода (добавление элементов массива) php создает разные элементы массива!
Проблема в том, что вы не показываете весь код, или хотя бы ту его часть, чтобы мы увидели разные элементы. А верить на слово тут не принято.
А пока вот, что заметил:
function number_to_norm($number) {
$number_new = str_replace(array(" ", "-", "+", "‑", " "), "", $number);
$number = trim($number_new); // Это лишнее, вы уже дважды удалили пробелы выше
$number = strval($number); // $number и так уже строка
return $number;
}
Как минимум, можно переписать так:
function number_to_norm($number) {
return str_replace(array(" ", "-", "+", "‑"), "", $number);
}
Если вам нужно получить только цифры из строки, то надёжнее будет удалить все нецифровые символы:
function number_to_norm ($number) {
return preg_replace('/\D/', '', $number);
}