Формирование массива данных из csv файла

298
13 апреля 2017, 19:48

Есть небольшой файл в формате csv, каждый столбец которого я чоху записать в массив. Для этого я пишу следующий код:

$handle = fopen("new_price.csv", "r");
$id          = [];
$price       = [];
while (($data = fgetcsv($handle, 10000, ";")) !== FALSE) {
    $length=count($data);      
    for( $i=0; $i < $length; $i++ ){ 
        if( $i == 1 ) array_push($id, iconv("UTF-8", "CP1251", $data[$i]));
        if( $i == 3 ) array_push($price_from, iconv("CP1251", "UTF-8", $data[$i]));
    }    
}
array_shift($id);
array_shift($price_from);
foreach($price as $key => $v){
    echo $key." ".$v."<br>";
} 

Проблема заключается в том, что если в столбце есть хотя бы несколько русских букв, то строка в столбце получается пустой, подскажите как исправить?

Answer 1

применил mb_convert_encoding и заработало mb_convert_encoding($data[$i], 'utf-8', "windows-1251");

READ ALSO
Изменить $js=file_get_contents на $string=file_get_contents

Изменить $js=file_get_contents на $string=file_get_contents

Есть код, получает заголовок и ссылку со стороннего сайта

222
read(sock&hellip;) и write(sock&hellip;) не работают синхронно

read(sock…) и write(sock…) не работают синхронно

C++, Ununtu 1604 LTS, Компилятор g++

209
Сравнение множества значений

Сравнение множества значений

Как коротко сравнить много значений на равенство? Надо такое поведение:

238
Двойная итерация в одном цикле

Двойная итерация в одном цикле

Как сделать так, чтобы одновременно в одном цикле шли две итерации (например i и j)?

241