-1

大量の通知を表示する理由を教えてください。

私はphpが初めてで、どこが間違いなのかわかりません。行からの通知:

<td>'.$columns[1].'</td> 

行に:

$sum+=$columns[2];

これが私のコードです:

<?php
         if(file_exists('data.txt'))
         {
             $result= file('data.txt');
             $sum='0';

             foreach($result as $value)
             {

                 $columns=explode('-', $value);

                 echo  '<tr>
                             <td>'.$columns[0].'</td>
                             <td>'.$columns[1].'</td>
                             <td>'.$columns[2].'</td>
                             <td>'.$kinds[trim($columns[3])].'</td>
                        </tr>';
                 $sum+=$columns[2];

             }
             echo '<tr>
                <td>--</td>
                <td>--</td>
                <td>' . $sum . ' </td>
                <td>--</td>
            </tr>'; 


         }             
         ?>

私はphpが初めてで、どこが間違いなのかわかりません:(行からの通知

<td>'.$columns[1].'</td> 

行に

$sum+=$columns[2];

ここに通知があります:

Notice: Undefined offset: 3 in C:\xampp\htdocs\HomeworkOne\index.php on line 31 
Notice: Undefined index: in C:\xampp\htdocs\HomeworkOne\index.php on line 31
Notice: Undefined offset: 2 in C:\xampp\htdocs\HomeworkOne\index.php on line 33
Notice: Undefined offset: 1 in C:\xampp\htdocs\HomeworkOne\index.php on line 29
Notice: Undefined offset: 2 in C:\xampp\htdocs\HomeworkOne\index.php on line 30
Notice: Undefined offset: 3 in C:\xampp\htdocs\HomeworkOne\index.php on line 31
Notice: Undefined index: in C:\xampp\htdocs\HomeworkOne\index.php on line 31
4

7 に答える 7

1

これは未定義のオフセットです:

$array[0] = "test1";
$array[1] = "test2";

echo $array[3];

内部の内容がわかっているオブジェクトまたは配列を使用することをお勧めします。

使用を取り除くには、次のようにします。

$array[0] = "test1";
$array[1] = "test2";

if (array_key_exists(3, $array)) {
    echo $array[3];
}

あなたの場合の問題:

$columns = explode('-', $value);

テキストファイルから grep したデータは、100% 期待どおりの形式ではありません。たとえば、次のようになります。

aaaaa-bbbbbb-cccccc-ddddddd
aaaaa--cccccc-dddddd
aaaaa-ddddd

つまり、読み取ったデータが有効であり、正しい形式であることを確認する必要があります。

于 2013-09-25T12:17:30.663 に答える
0

この方法を試すと、毎回 4 つの列があるかどうかがわかります。

<?php
if (file_exists('data.txt')) {
    $result= file('data.txt');
    $sum=0;

    foreach($result as $value) {
        $columns=explode('-', $value);
        echo  '<tr>';
        foreach ($columns as $key => $column) {
            echo '<td>'.$column.'</td>';
            if ($key == 2) $sum += $column;
        }
    echo '</tr>';
    echo '<tr><td>--</td><td>--</td><td>'.$sum.'</td><td>--</td></tr>'; 
}             
?>
于 2013-09-25T12:39:34.153 に答える