Это то, что Ignacio said: либо while
или if
всегда возвращается ложь, и вы должны инициализировать $array
как пустой массив до этого в то время как петли в любом случае.
Вот предложение, возможно, получить результаты быстрее: если CSV всегда содержит почтовые индексы в том же столбце, вместо этого используйте fgetcsv
. Затем вы можете просто указать номер столбца для проверки (is_numeric(substr($line[column_num],0,5))
) вместо того, чтобы запускать preg_replace
на всей строке.
Edit:
Используя данные примера вы размещены с вашего сайта (я заметил, все файлы данных там имеют почтовый индекс в первом столбце, некоторые файлы имеют строку заголовка, а некоторые нет), это функция делает трюк:
function csv_data_to_zip_array($csv_path) {
$fd = fopen($csv_path,'r');
$zipcodes = array();
while ($columns = fgetcsv($fd)) {
if(is_numeric($columns[0])) {
$zipcodes[] = $columns[0];
}
}
return $zipcodes;
}
это не совсем в формате csv, там просто текстовые документы переименованы в csv, потому что они их отправляют. idky – theprestig3
Также, если я эхо-строка $, почтовый индекс печатается. – theprestig3
@ theprestig3, можете ли вы подтвердить, что вы теперь инициализируете '$ array' как пустой массив перед циклом' while'? – imm