【发布时间】:2016-09-26 15:24:20
【问题描述】:
我在使用 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 文件包含所有警告消息,每个订单后都在一个新行中。
任何帮助表示赞赏。
【问题讨论】:
-
在你的 foreach 循环中定义正确的
key和value并在$data[] = ( '' !== $row[ $header_key ] ) ? $row[ $header_key ] : '';上替换这一行$data[]=$row[$header_key];并让我知道它是否有效? -
谢谢。我试着按照你说的做,但这仍然产生相同的结果。可能是文件中其他地方的问题?