Как разобрать массив на элементы и сохранить в файл?
Этот код записывает данные в файл
$data = file_get_contents('php://input');
$data = json_decode($data, true);
function writeLogFile($string, $clear = false){
$log_file_name = __DIR__."/message.txt";
$now = date("Y-m-d H:i:s");
if($clear == false) {
file_put_contents($log_file_name, $now." ".print_r($string, true)."\r\n", FILE_APPEND);
} else {
file_put_contents($log_file_name, $now." ".print_r($string, true)."\r\n");
}
}
writeLogFile($data, false);
В таком формате
...
2025-03-11 01:10:28 Array
(
[update_id] => 82576514
[message] => Array
(
[message_id] => 6618
[from] => Array
(
[id] => 390344561
[is_bot] =>
[first_name] => ???
[last_name] => ???
[username] => ETR
[language_code] => ru
)
[chat] => Array
(
[id] => 390344561
[first_name] => ???
[last_name] => ???
[username] => ETR
[type] => private
)
[date] => 1741644628
[text] => Главная
)
)
...
Как сделать что бы в файл записывалось в таком формате
2025-03-11 01:10:28 Имя => ???, Фамилия => ???, Ник => ETR ...
И в файл .csv (как этот код настроить?)
$buffer = fopen(__DIR__ . '/file.csv', 'w');
fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF));
foreach($string as $val) {
fputcsv($buffer, $val, ';');
}
fclose($buffer);
exit();
Ответы (1 шт):
Автор решения: Рустам Рысаев
→ Ссылка
function writeLogFile($data, $clear = false){
$log_file_name = __DIR__."/message.txt";
$now = date("Y-m-d H:i:s");
if (isset($data['message'])) {
$user = $data['message']['from'];
$logText = "$now Имя => {$user['first_name']}, Фамилия => {$user['last_name']}, Ник => {$user['username']}, ID => {$user['id']}\n";
} else {
$logText = "$now Неизвестный формат данных\n";
}
if ($clear == false) {
file_put_contents($log_file_name, $logText, FILE_APPEND);
} else {
file_put_contents($log_file_name, $logText);
}
}
writeLogFile($data, false);
function isUserIdExists($user_id, $csv_file) {
if (!file_exists($csv_file)) return false;
$handle = fopen($csv_file, 'r');
while (($row = fgetcsv($handle, 1000, ";")) !== false) {
if (isset($row[4]) && $row[4] == $user_id) {
fclose($handle);
return true; // ID уже есть в файле
}
}
fclose($handle);
return false;
}
function writeToCsv($data) {
$csv_file = __DIR__ . '/file.csv';
if (!isset($data['message'])) return;
$user = $data['message']['from'];
$user_id = $user['id'];
// Проверяем, есть ли уже этот ID в файле
if (isUserIdExists($user_id, $csv_file)) return;
$buffer = fopen($csv_file, 'a');
if (filesize($csv_file) == 0) {
fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF));
}
$row = [
date("Y-m-d H:i:s"),
$user['first_name'],
$user['last_name'],
$user['username'],
$user_id
];
fputcsv($buffer, $row, ';');
fclose($buffer);
}
writeToCsv($data);