[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Извлечь массив из файла: извращение с eval()
DySprozin
Уж сколько всего сказано про то, что eval - бяка страшная и использовать его можно только в крайних случаях, потому что - потеря производительности, и проч проч...

А вот скажем такая задача: в файл записываем массив. Естественно, сам массив записать нельзя...
Первый вариант: будет что-то типа такого:
----file.txt----
1:5
8:4
3:6
2:1
6:4
5:3
22:45
324:432
---------------
Можно обработать так:
<?php
$f = join('', file('file.txt'));
$f = explode("\n", $f);
foreach ($f as $value) {
$value = explode(':', $value);
$mas[$value[0]] = $value[1];
}

В результате получаем двумерный массив $mas.


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

----file.txt----
$mas[1] = 5;
$mas[8] = 4;
$mas[3] = 6;
$mas[2] = 1;
$mas[6] = 4;
$mas[5] = 3;
$mas[22] = 45;
$mas[324] = 432;
---------------

тогда php код будет сокращен до 1 строки:
<?php
eval(join('', file('file.txt')));


А теперь вопрос: чем плох последний вариант? В чем минусы? Или оба варианта плохие?
Сразу: делаем допущение, что возможность записи "посторонних данных" в file.txt исключается и самих записей не настолько много, чтобы страдать, что каждая строка во втором случае на 9 символов больше (;



Спустя 4 минуты, 12 секунд (30.06.2011 - 00:06) waldicom написал(а):
Цитата (DySprozin @ 29.06.2011 - 22:02)
А вот скажем такая задача: в файл записываем массив. Естественно, сам массив записать нельзя...

Эммм... Я чего-то не понимаю или функция serialize() действительно не подходит?

Спустя 3 минуты, 2 секунды (30.06.2011 - 00:09) DySprozin написал(а):
Цитата
serialize()

во! а я помню чего-то подобное было laugh.gif только када я про нее читал в давние времена, ее советовали использовать для записи массива в куки... видимо поэтому в голове и не осело cool.gif
пасиб cool.gif

Спустя 1 минута, 33 секунды (30.06.2011 - 00:10) Invis1ble написал(а):
Или json_encode()

Спустя 9 минут, 10 секунд (30.06.2011 - 00:20) DySprozin написал(а):
Invis1ble
это только для пятого пыха - в этом смысле serialize() лучше (;

Спустя 13 минут, 28 секунд (30.06.2011 - 00:33) Invis1ble написал(а):
DySprozin
Согласен

Спустя 3 минуты, 48 секунд (30.06.2011 - 00:37) walerus написал(а):
Еще один изврат, а может и не совсем :rolleyes: в файл изначально записывать в таком виде:


----file.txt----
<?php
$mas[1] = 5;
$mas[8] = 4;
$mas[3] = 6;
$mas[2] = 1;
$mas[6] = 4;
$mas[5] = 3;
$mas[22] = 45;
$mas[324] = 432;
?>
---------------

тогда php код будет сокращен до 1 строки:

include ('file.txt');


B)

Спустя 3 минуты, 26 секунд (30.06.2011 - 00:40) waldicom написал(а):
Цитата (walerus @ 29.06.2011 - 22:37)
Еще один изврат, а может и не совсем rolleyes.gif в файл изначально записывать в таком виде:

Не такой практичный, как serialize() или json_encode(), но интересный подход.


_____________
Господа! Я ненавижу выканье на форумах, обращайтесь ко мне на ты.
Господа! Я буду тоже тыкать, но если это так кого-то из вас коробит, пожалуйста, предупреждайте меня об этом
---
Можешь помочь — помоги, не можешь — попытайся, не хочешь — уйди.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.