Возникли проблемы при разбиение на массив...

dast

Новичок
Возникли проблемы при разбиение на массив...

значит так... вот сабж:

есть строка :
Процессор AMD Socket 754 Athlon 64 2800/800 512Kb box; шт; 100,45

развибаю на массив, по следующему принцепу, разделителем являеться занак ";"

но вот напасть последний масив записываеться не правильно, вместо 100,45 записываеться только 100 короче обрезает он запитую и все что после нее :(

Подскажите если не трудно как это исправить?
 

dast

Новичок
вообще это все береться из CSV файла :

$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
$row++;
 

@lexander

Новичок
Может лучше explode?
или считывать строку и после её посимвольно парсить?

--
Код у тебя, кстати, немного не закончен:)
 

dast

Новичок
мне кажеться чо это будет очень сильно напрегать сервер так как в файле около 2500 строк... я просто не могу понять почему это происходит? ведь разделителем являеться ; а , не должна сдесь вообще играть...
 

SiMM

Новичок
Не воспроизводится. Тестовый скрипт:
PHP:
Процессор AMD Socket 754 Athlon 64 2800/800 512Kb box; шт; 100,45
<?print_r(fgetcsv(fopen(__FILE__,'rb'),1000,';'));?>
Код:
Процессор AMD Socket 754 Athlon 64 2800/800 512Kb box; шт; 100,45
Array
(
    [0] => Процессор AMD Socket 754 Athlon 64 2800/800 512Kb box
    [1] =>  шт
    [2] =>  100,45
)
PS: PHP 4.4.2/WinXP
 

dast

Новичок
Все я разобрался... Проблема не в PHP а в EXCEL это он обрезает дробные числа при сохранение в формат CSV...

А помогите тогда чуть исправить код:

$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
$row++;

Только разделителем должне являться не ; а знак торбуляции или клавиша TAB? как мне это сделать я пробовал вставлять вместо ; но ничего не получаеться...

-~{}~ 14.06.06 10:06:

о все заработало... :) но опять другой вопрос, в файле дробные числа записываються вот так 7,45 но php их упорно не считает за дробные числа и при умножение на 30 выдает 210 а не 223,5 подскажите как это можно исправить.
 

dast

Новичок
а как мне заменить то??? вручную там свихнешся там 2500 строк... можест есть какая фукция для этого что бы просто масив переделала или что бы в масиве заменяла знак , на . ?
 

Фанат

oncle terrible
Команда форума
не ори.
при чём здесь массив? при чём здесь руки? чё ты так возбудился?
обязательно всё заранее заменять? когда понадобится - тогда и заменишь.
 

dast

Новичок
а не кто собственно и не орет... да обязательно заменять.
 

Фанат

oncle terrible
Команда форума
ты по-русски читать умеешь?
значение слова "заранее" тебе доступно?
а смысл текста "когда понадобится - тогда и заменишь" доходит до твоего замутнённого сознания?
 

dast

Новичок
ты не понял, после выполнения скрипта все данные разбиваються на массив и данные со значение допустим попадают в масив $data[3] если просто вывести этот масив то он выведет правильное значение а если с ним работать как с число, что собственно и нужно тогда ни чего не происходит, а просто обрезаеться дробная часть... и считаеться только целое.
 

Фанат

oncle terrible
Команда форума
а заменять при добавлении в массив ты, конечно, не догадался?
 

dast

Новичок
Фанат ты слишком грубо отвечаеш... вот если бы это было в реале я бы тебе по лицу ударил... извините за оффтоп...

Подскажи плиз только функцию при помоши которой можно заменить один знак на другой в переменной? больше ни чего не нужно...
 

Фанат

oncle terrible
Команда форума
вот это "ты не понял" меня всегда страшно умиляет =)
то есть, человек уверен, что проблема перед ним стоит - гигантская и нерешаемая. её надо раз 5 объяснить только, чтобы её поняли. на это уходят все его силы.
и на чтение ответов с решением этой "проблемы" сил уже не остаётся.

-~{}~ 14.06.06 10:36:

Подскажи плиз только функцию при помоши которой можно заменить один знак на другой в переменной? больше ни чего не нужно...
о, родил, наконец.
название функции посмотришь в мануале.
 

dast

Новичок
а вот зачем писать вот это:
о, родил, наконец.
название функции посмотришь в мануале.

это я и без тебя мог догадаться... тебе вот что трудно ответить, подсказать что за функция? и начнем с того что никто не говорил что это проблема большая и не решаемая?.. ненадо больше отсебятину нести... мне нужно только узнать что за функция, самостоятельно ее не найду опыта маловато...
 
Сверху