0

私はこのコードを私が求めているものとまったく同じように機能させようとしています:http: //www.reloadedpc.com/php/php-convert-csv-price-matrix-mysql-table/

このエラーが発生しますが:

警告:array_merge()[function.array-merge]:引数#1は、580行目のC:\ xampp \ htdocs \ matrix\Csv.phpの配列ではありません

警告:array_merge()[function.array-merge]:引数#1は、580行目のC:\ xampp \ htdocs \ matrix\Csv.phpの配列ではありません

警告:array_merge()[function.array-merge]:引数#1は、580行目のC:\ xampp \ htdocs \ matrix\Csv.phpの配列ではありません

致命的なエラー:24行目のC:\ xampp \ htdocs \ matrix\index.phpの保護されたプロパティCsv::$field_namesにアクセスできません

580行目はCsv.phpの次のとおりです。

$this->contents[$line_nr][(int) $position] = array_merge( $this->contents[$line_nr][(int) $position] );

index.phpの24行目(および23行目)は次のとおりです。

//get the row of width increments
$stack = $csv->field_names;

Csv.phpファイルはここで表示できます:http: //hg.mijnpraktijk.com/csv-library/src/e4397b31002d/Csv.php

助言がありますか?

みんなありがとう。

-編集 -コードブロック全体は次のとおりです。

 foreach ( $this->contents as $line_nr => $line )
                {

                        if ( array_key_exists( (int) $position, $this->contents[$line_nr] ) )
                        {
                             $return[$line_nr] = $this->contents[$line_nr][(int) $position];
                                unset( $this->contents[$line_nr][(int) $position] );
                                // reindex after removal
                                $this->contents[$line_nr][(int) $position] = array_merge($this->contents[$line_nr][(int) $position] );
                        }
                }

設定が解除されているようです。$ this-> contents [$ line_nr] [(int)$position]はマトリックスのヘッダーです。

4

1 に答える 1

1

エラーの最後の行を見ると、次のように書かれています。

致命的なエラー: 24 行目の C:\xampp\htdocs\matrix\index.php の保護されたプロパティ Csv::$field_names にアクセスできません

投稿した Csv.php リンクに移動してコードを調べると、実際にfield_namesが次のように定義されていることがわかります。protected $field_names = array();これは、Csv クラスを拡張しない限り直接アクセスできないことを意味します。

このクラスを拡張したくない場合は、パブリック メソッドを使用してください。

$csv->get_field_names();
于 2012-08-08T09:10:16.690 に答える