SKIF пишет: Единственный минус это то, что перед сохранением приходится удалять все входы "\n" .
Это не единственный минус.
Теперь смотри у тебя есть массив:
CODE:Array
(
[cat] => Сайтостроительство
[cid] => 1
[name] => Общие вопросы
[posts] => 2538
[top] => 294
[pos] => 101
[sts] => all
[cod] => 1
[up] => 102400
)
Чтобы записать его в файл потребуется только функция serialize, в результатом которой будет строка:
CODE:a:9:{s:7:"cat";s:18:"Сайтостроительство";s:5:"cid";i:1;s:4:"name";s:13:"Общие вопросы";s:5:"posts";i:2538;s:6:"top";i:294;s:8:"pos";i:101;s:6:"sts";s:3:"all";s:5:"cod";b:1;s:6:"up";i:102400;}
Чтобы вернуть массив достаточно сделать unserialize, и мы можем обращаться к элементам массива по их именнованным ключам. Также эта функция позволяет сохранять вложенные масивы (многомерные) чего нельзя добиться используя file в купе с другими функциями.
В варианте с file, ты должен все эти данные разграничить неким символом функцией implode (или подобной), в последствии, после обратного чтения из файла и разбиения строки на элементы массива (explode) ты сможешь обращаться к элементам такого массива только по их числовым ключам.
Плюс serialize еще и в том что он сохраняет типы переменных. Если ты объявил переменную в FALSE, то после unserialize эта переменная будет именно FALSE, а не 0. То есть сохранится ее тип (boolean).
Есть конечно и минусы. Плюс на больших файлах скорость работы функции замедляется.
ИМХО file годится для небольших данных.