Wordpress PHP非法字符串错误

时间:2015-02-17 05:03:31

标签: php wordpress csv wordpress-plugin

我遇到一些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 answerin this one。 我不确定如何修复我必须使用的代码,或者这确实是实际问题,而不是别的东西。

导出的csv文件包含每个订单后新行上的所有警告消息。

任何帮助表示感谢。

1 个答案:

答案 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 );
}

我把它压缩了,因为所有的代码确实假设有一个流,分隔符,封装变量和头数组都存储在类的其他地方。如果标题数组不包含字母数字索引,那么您将收到错误。