2015-02-23 3 views
0

Я не знаю, задан этот вопрос или нет. Я не понял его.php fputcsv выравнивает строковое значение при записи в файл

Я пытаюсь написать некоторые данные из базы данных в файл csv. Я использую функцию fputcsv.

Я использую следующий код:

$fh = @fopen($fileName, 'w+'); 
     $writeText['sku'] = $somevalue 
     $writeText['attribute_set'] = $somevalue 
     $writeText['type'] = $somevalue 
     $writeText['default_catalogue_link']= $somevalue 
     $writeText['status'] = $somevalue 
@fputcsv($fh, $writeText); 
     @flush(); 
@fclose($fh); 

Некоторые из значений начинается с нуля, как $writeText['sku'] является 0987. После записи в файл. Я получаю 987 в файле.

как предотвратить это? Мне нужно с нулевыми значениями.

Любая помощь была бы полезной. Спасибо заранее.

+0

Попробуйте '$ writeText ['sku'] = (string) $ somevalue;' – grimmdude

+0

Если это не работает, и вы знаете, что все skus составляют 4 цифры, вы можете использовать 'str_pad()' для поддержания начального нуля. Или я верю, что если вы убедитесь, что значения инкапсулированы в виде строк (с кавычками) в CSV, они должны хранить ведущие нули. – grimmdude

+0

(строка) некоторое значение не работает. Не все значения имеют 4digits –

ответ

1

Вы используете Excel, чтобы открыть файл? Потому что Excel интерпретирует его как число. Попробуйте открыть и посмотреть с помощью текстового редактора.

+0

ничего плохого в коде? Проверить все эти операторы подавления ошибок! -.- – hanshenrik

+0

извините, я пытался сказать, что данные могут все еще находятся в csv, даже если он не видит его в правильном формате. Например, я однажды попытался получить строку «536775212172206080» на csv, и он показывал 5.37E + 17, но номер был все еще там, Я проверяю с помощью текстового редактора. –

+0

@Sanura Да, вы правы. Он корректно отображается в текстовом редакторе, я хотел использовать этот файл в качестве ввода для другого приложения, его работа прекрасна. :-) Спасибо –