php - 捕获 Webhook 条目并放在新的 .csv 行上
问题描述
我正在尝试将 webhook 数据添加到创建的(如果不存在)存在的 .CSV 文件中,并将数据添加到同一 .CSV 文件中的新行(如果存在)。我遇到的问题是,当 webhook 第一次捕获数据时,我可以创建新文件 .CSV 并添加数据。如果 webhook 捕获到一组不同的数据,则不会创建包含该信息的新行,甚至不会将其添加到 .CSV 文件中。我究竟做错了什么?
这是一个有效载荷示例:
Array
(
[lead_id] => lead_id1
[form_id] => form_id1
[user_column_data] => Array
(
[0] => Array
(
[column_name] => Full Name
[string_value] => John Doe
)
[1] => Array
(
[column_name] => User Phone
[string_value] => 12345678
)
[2] => Array
(
[column_name] => User Email
[string_value] => abc@123.com
)
)
[api_version] => 1.0
[google_key] => secret
)
这是我的代码:
<?php
$data = file_get_contents("php://input");
$events = json_decode($data, true);
$users = $events['user_column_data'];
$columns = false;
$filename = "user_responses.csv";
if( ! file_exists( $filename ) ){
$columns = array(
"User Name",
"User Phone",
"User Email Address"
);
}
foreach ($users as $key => $value) {
if( $columns ){
$columns[] = strip_tags( $value['column_name'] ) . " ({$value['string_value']})";
}
}
$fp = fopen( $filename, "a+" );
if( $columns ){
fputcsv( $fp, $columns );
}
fclose( $fp );
http_response_code(200);
?>
最重要的是,我什至无法将数据归入我创建的标题之下。
解决方案
$columns
如果文件不存在,您只会初始化数组。如果文件存在,则您$columns
的未定义,并且foreach ($users...
循环不会在此处添加任何条目。你应该摆脱if ($columns)
支票。
此外,您的foreach ($users...
循环遍历整行,而不是字段。循环中的每个$value
都是一行,一个列数组。
推荐阅读
- servlets - 在 ServletOutputStream 中刷新数据块后出错的最佳方法是什么
- c# - C# 反序列化格式奇怪的 JSON 数组
- javascript - 使用 JavaScript 在 10 秒内将进度条从 0 加载到 100%
- ios - ios中的ionic 3 geolocation位置错误
- vb.net - 使用 VB .NET 使用 Word 互操作库删除页面
- javascript - 在插件管理开发中使用 Wordpress Gutenberg 组件
- c# - 关于简化功能的建议
- api - 使用 Admin API 的 Shopify 订单状态
- javascript - 在 setState() 触发之前,放大器状态一直被忽略
- java - 无法更新 NaturalId 字段值:实体 {Model} 的不可变自然标识符已从 ABC 更改为 XYZ