我遇到一些wordpress插件(客户订单CSV导出)的问题,由于某种原因,它已经开始将错误警告放入导出的文件中。 它说订单的每个部分都有一个非法的字符串偏移量(因此每个文件大约有40个警告)。我只附加了order_number的警告,但其余的都说了相同的行:
<b>Warning</b>: Illegal string offset 'order_number' in <b>/home/.../wp-content/plugins/woocommerce-customer-order-csv-export/includes/class-wc-customer-order-csv-export-generator.php</b> on line <b>709</b><br />
<b>Warning</b>: Illegal string offset 'order_number' in <b>/home/.../wp-content/plugins/woocommerce-customer-order-csv-export/includes/class-wc-customer-order-csv-export-generator.php</b> on line <b>713</b><br />
<b>Warning</b>: Illegal string offset 'order_number' in <b>/home/.../wp-content/plugins/woocommerce-customer-order-csv-export/includes/class-wc-customer-order-csv-export-generator.php</b> on line <b>713</b><br />
php文件中的违规行如下所示:
private function write( $row ) {
$data = array();
foreach ( $this->headers as $header_key => $_ ) {
if ( ! isset( $row[ $header_key ] ) ) {
$row[ $header_key ] = '';
}
// strict string comparison, as values like '0' are valid
$data[] = ( '' !== $row[ $header_key ] ) ? $row[ $header_key ] : '';
}
fputcsv( $this->stream, $data, $this->delimiter, $this->enclosure );
}
错误行是709:
$row[ $header_key ] = '';
和713:
$data[] = ( '' !== $row[ $header_key ] ) ? $row[ $header_key ] : '';
环顾一些类似的问题,看起来与isset有关: as in this answer和in this one。 我不确定如何修复我必须使用的代码,或者这确实是实际问题,而不是别的东西。
导出的csv文件包含每个订单后新行上的所有警告消息。
任何帮助表示感谢。
答案 0 :(得分:0)
这个功能对我来说似乎有些过分,所以我会以一种更简单易懂的方式重写它。
private function write( $row ) {
$data = array();
foreach ( $this->headers as $header_key => $header_value ) {
if ( !isset($row[$header_key]) ){
$row[$header_key] = '';
}
$data[]=$row[$header_key];
}
fputcsv( $this->stream, $data, $this->delimiter, $this->enclosure );
}
我把它压缩了,因为所有的代码确实假设有一个流,分隔符,封装变量和头数组都存储在类的其他地方。如果标题数组不包含字母数字索引,那么您将收到错误。