$value) { $headers[$key] = iconv("utf-8", "gbk//TRANSLIT", $value); } fputcsv($handle, $headers); if (is_resource($handle)) { fclose($handle); } } /** * 设置写入CSV文件内容 * @param array $list 数据列表(二维数组) * @param array $rules 数据规则(一维数组) */ public static function body(array $list, array $rules): void { $handle = fopen('php://output', 'w'); foreach ($list as $data) { $rows = []; foreach ($rules as $rule) { $rows[] = static::parseKeyDotValue($data, $rule); } fputcsv($handle, $rows); } if (is_resource($handle)) { fclose($handle); } } /** * 根据数组key查询(可带点规则) * @param array $data 数据 * @param string $rule 规则,如: order.order_no * @return string */ public static function parseKeyDotValue(array $data, string $rule): string { [$temp, $attr] = [$data, explode('.', trim($rule, '.'))]; while ($key = array_shift($attr)) $temp = $temp[$key] ?? $temp; return (is_string($temp) || is_numeric($temp)) ? @iconv('utf-8', 'gbk//TRANSLIT', "{$temp}") : ''; } }