Как разобрать массив на элементы и сохранить в файл?

Этот код записывает данные в файл

$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);

→ Ссылка