[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись массива в файл
gibiskus
Здравствуйте.
Возникла необходимость написать простенький скрипт, но в силу моих скудных познаний в php решил спросить совета знающих людей, как это все сделать.
Итак, есть файл с таким содержимым:
['1', 'a', 3],
['2', 'b', 5],
['3', 'c', 10]

Мне необходимо проверить в каждой строке нулевую ячейку массива, и если она совпадает с нужным мне числом, то заменить первую и вторую ячейки на нужные данные. Вот какой код у меня получился. Единственное, я не знаю, как мне вырезать функцией split нужные данные. Надеюсь на вашу помощь.
$lines = file('1.txt');
if($lines) {
foreach ($lines as &$line) {
$trimed=trim($line);
list ($id, $name, $count) = split(???,$trimed,3);
if ($id==1){
$line = "['".$id."', 'd', 10],\n";
file_put_contents('1.txt', $lines);
exit;
}
}
}
Valick
Цитата (gibiskus @ 12.06.2015 - 18:29)
Итак, есть файл с таким содержимым:
['1', 'a', 3],
['2', 'b', 5],
['3', 'c', 10]

почему содержимое именно в таком виде?


_____________
Стимулятор ~yoomoney - 41001303250491
gibiskus
Нужно именно в таком.
Valick
ок

_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Цитата (gibiskus @ 12.06.2015 - 19:29)
Итак, есть файл с таким содержимым:
['1', 'a', 3],
['2', 'b', 5],
['3', 'c', 10]

Это содержимое - почти что готовое содержимое в формате JSON :) Почему бы этим не воспользоваться? Если, конечно, файл имеет разумный размер.
Итак... (на самом деле, тут еще надо добавить кое-какие проверки, типа загрузились ли данные из файла, но это уже другой разговор)
// 1. Получить данные и немного их дополнить
$input = '[' . file_get_contens( '1.txt'). ']';
// 2. Заменить одинарные кавычки на двойные, как это хочет JSON
$input = str_replace( "'", '"', $input);
// 3. Получить данные в виде двойного массива
$a = json_decode( $input );
// 4. Поработать с данными
foreach( $a as ... )
{
...
}
// 5. Опять изменить кавычки, если, конечно, нужны одинарные
$output = str_replace( '"', "'", json_encode( $a ) );
// 6. Убрать лишние квадратные скобки, добавить "перенос строки", если он нужен (тут сам подумай)
...
// 7. Сохранить в файл
file_put_contents( '1.txt', $output);

Несмотря на "многа букофф", такой алгоритм получается очень четкий и однозначный.

Подсказка, на всякий случай :)
Если на шаге 4 сразу же вывести полученный массив, например так
echo '<pre>'.print_r( $a, 1). '</pre>';

то получим данные в таком виде
массив
[Array
(
[0] => Array
(
[0] => 1
[1] => a
[2] => 3
)

[1] => Array
(
[0] => 2
[1] => b
[2] => 5
)

[2] => Array
(
[0] => 3
[1] => c
[2] => 10
)

)
]


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

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