0

コードを実行しようとすると、次のエラーが表示されます。

Notice (8): Undefined offset:  18 [APP/libs/excel_adapters/coverage.php, line 12]
Notice (8): Undefined offset:  23 [APP/libs/excel_adapters/coverage.php, line 13]
Notice (8): Undefined offset:  24 [APP/libs/excel_adapters/coverage.php, line 14]
Notice (8): Undefined offset:  25 [APP/libs/excel_adapters/coverage.php, line 15]
Notice (8): Undefined offset:  26 [APP/libs/excel_adapters/coverage.php, line 16]
Notice (8): Undefined offset:  14 [APP/libs/excel_adapters/coverage.php, line 17]
Notice (8): Undefined offset:  14 [APP/libs/excel_adapters/coverage.php, line 18]

そうは言っても、このコードはスプレッドシートをデータベースにアップロードするために使用されます。私の問題は $s 変数にあると思います。誰かが私のコードを見て、私の問題が何であるか教えてください。新鮮な目のセットは私を大いに助けると思います.

      <?php 
      class CoverageExcelAdapter {

    public function extract($s, $args = array()) { 
    App::import('component', 'CakeSession');        
    $userId = CakeSession::read('Auth.User.id');        
    $ret = array();

    $ret['Coverage'] = array(
        'name' => $s[0][12][3], 
        'effective_date' => $this->Date->formatDate($s[0][18][3]),
        'expiration_date' => $this->Date->formatDate($s[0][18][6]),
        'broker_first_name' => ucwords($s[0][23][3]),
        'broker_middle_initial' => strtoupper(substr($s[0][24][3], 0, 1)),
        'broker_last_name' => ucwords($s[0][25][3]),
        'broker_suffix' => ucwords($s[0][26][3]),
        'producing_id' => $this->State->stateStrToId($s[0][14][3]), 
        'filing_id' => $this->State->stateStrToId($s[0][14][6]),

これが私の変数ダンプです....

array(1) {
    [0]=> array(1) {
        [0]=> array(41) {
            [0]=> string(13) "ProcessorName"
            [1]=> string(10) "BranchCode"
            [2]=> string(9) "FileTaxID"
            [3]=> string(9) "FileState"
            [4]=> string(11) "FileLicense" [5]=> string(5) "First" [6]=> string(6) "Middle" [7]=> string(12) "Company_Last" [8]=> string(11) "InsuredName" [9]=> string(12) "RiskLocation" [10]=> string(14) "UnderwritingCo" [11]=> string(10) "Home State" [12]=> string(8) "PolicyNo" [13]=> string(10) "PolicyType" [14]=> string(10) "MultiState" [15]=> string(14) "LineOfBusiness" [16]=> string(13) "EffectiveDate" [17]=> string(24) "EndorsementEffectiveDate" [18]=> string(7) "EndDate" [19]=> string(7) "Premium" [20]=> string(13) "InsuredAmount" [21]=> string(9) "PolicyFee" [22]=> string(13) "InspectionFee" [23]=> string(6) "CatFee" [24]=> string(7) "SLTaxes" [25]=> string(17) "Fire Marshall Tax" [26]=> string(9) "Surcharge" [27]=> string(21) "Additional Assessment" [28]=> string(11) "StampingFee" [29]=> string(9) "InvoiceNo" [30]=> string(11) "InvoiceDate" [31]=> string(4) "AC1 " [32]=> string(8) "AC1 Date" [33]=> string(12) "AC1_Comments" [34]=> string(3) "AC2" [35]=> string(8) "AC2 Date" [36]=> string(12) "AC2_Comments" [37]=> string(3) "AC3" [38]=> string(8) "AC3 Date" [39]=> string(12) "AC3_Comments" [40]=> string(8) "Comments"
        }
    }
}

print_r を実行すると、次のようになります。

print_r

Array (
    [0] => Array (
        [0] => Array (
            [0] => ProcessorName
            [1] => BranchCode
            [2] => FileTaxID
            [3] => FileState
            [4] => FileLicense [5] => First [6] => Middle [7] => Company_Last [8] => InsuredName [9] => RiskLocation [10] => UnderwritingCo [11] => Home State [12] => PolicyNo [13] => PolicyType [14] => MultiState [15] => LineOfBusiness [16] => EffectiveDate [17] => EndorsementEffectiveDate [18] => EndDate [19] => Premium [20] => InsuredAmount [21] => PolicyFee [22] => InspectionFee [23] => CatFee [24] => SLTaxes [25] => Fire Marshall Tax [26] => Surcharge [27] => Additional Assessment [28] => StampingFee [29] => InvoiceNo [30] => InvoiceDate [31] => AC1 [32] => AC1 Date [33] => AC1_Comments [34] => AC2 [35] => AC2 Date [36] => AC2_Comments [37] => AC3 [38] => AC3 Date [39] => AC3_Comments [40] => Comments
        )
    )
)
4

2 に答える 2

3

var_dump($s)そのメソッド内で実行します。存在しない配列キーにアクセスしています。


編集

上記のダンプを考えると、次を使用する必要があります。

$s[0][0][whatever]

代わりは。3 レベルの深さでネストされた配列がありますが、外側の 2 つのレイヤーは単一要素の配列です。

$s = array(array(array("Processor Name", etc...)));
于 2012-07-24T14:39:18.887 に答える
1

他の回答やコメントで示唆されているように var をダンプして、実際に持っているキーを確認し、それらのオフセットに適した名前の定数を定義します。どのように変更されるのですか? このコードは、どのプログラマーにも何の意味もありません (数日または数週間で含めました)。

于 2012-07-24T14:43:38.640 に答える