1

解析するサンプル レコードがあります。

@2013-01-19 02:45:00,1.32927,1.33029,1.32909,1.33018,464
@2013-01-19 03:00:00,1.33019,1.33142,1.33019,1.33081,637
@2013-01-19 03:15:00,1.33083,1.33129,1.33069,1.33095,425
@2013-01-19 03:30:00,1.33092,1.3317,1.33045,1.33144,500
@2013-01-19 03:45:00,1.33146,1.33211,1.33095,1.33196,480
@2013-01-19 04:00:00,1.33197,1.33291,1.33166,1.33264,593
@2013-01-19 04:15:00,1.33267,1.33308,1.33234,1.33238,366
@2013-01-19 04:30:00,1.33239,1.33278,1.33236,1.33263,335

このphpコードを使用して、5つのインデックスを持つ配列にすべての行を格納しようとしています(行はカンマで区切られています):

foreach($lines as $line){
    $data = explode('@', $line);
    foreach($data as $record){
        $val = explode(',',$record);
        echo '<pre>';
        print_r($val);
        echo '</pre>';
    }
}

$linesにはレコードが含まれています。

しかし問題は、次のように表示されることです。

    Array
(
    [0] => 

)
Array
(
    [0] =>  

)
Array
(
    [0] =>     

)
Array
(
    [0] => 

)
Array
(
    [0] => 

)
Array
(
    [0] => 
)
Array
(
    [0] => 2013-01-19 03:00:00
    [1] => 1.33019
    [2] => 1.33142
    [3] => 1.33019
    [4] => 1.33081
    [5] => 637

)
Array
(
    [0] => 2013-01-19 03:15:00
    [1] => 1.33083
    [2] => 1.33129
    [3] => 1.33069
    [4] => 1.33095
    [5] => 425

)

......

ゼロ (空の配列) がどこから来たのかわかりません。

コードに何か問題がありますか?助けてくれてありがとう..

4

2 に答える 2

2

@爆発する代わりに最初のものを削除します:

foreach($lines as $line){
    // remove the first character
    $record = substr($line,1);
    $val = explode(',',$record);
    echo '<pre>';
    print_r($val);
    echo '</pre>';

}

で爆発すると、配列@に空の値が生成されます-こちらを参照してください$data

于 2013-01-22T10:36:30.350 に答える
0

$data = 爆発 ('@', $line); を削除します。必要ない場合、または必要に応じて変更します

$lines[] = '2013-01-19 02:45:00,1.32927,1.33029,1.32909,1.33018,464';
    foreach($lines as $line){
        $data = explode('@', $line);
        foreach($data as $record){
            $val = explode(',',$record);
            echo '<pre>';
            print_r($val);
            echo '</pre>';
        }
    }
于 2013-01-22T10:38:36.353 に答える