1

次のコードで、CSV ファイルから読み取った各値に変数を割り当てたいと思います。

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>

たとえば、CSV ファイル内には、2 つの Excel 列から 4 つの値があります。

Jack,31/01/1991
Ross,15/03/1989

そして、Jack variable $vrble1、 31/01/1991 $vrble2、 Ross $vrble3、 15/03/1989 を作成してください$vrble4

どうやってやるの?

4

5 に答える 5

1

なぜそれをしたいのかわかりませんが、(間違っていなければ)次のようにできると思います:

for ($c=0; $c < $num; $c++) {
  $vname = 'vrble' . ($c+1);
  $$vname = $data[$c];
}

これで、$vrble1、$vrble2 などの変数の値が得られます。

これがあなたの質問に答えるかどうか教えてください。

于 2012-12-18T11:41:58.523 に答える
0

反復ごとに、データを単一の配列にマージします。

$file = new SplFileObject("test.csv");
$file->setFlags(SplFileObject::READ_CSV);
$data = call_user_func_array('array_merge', iterator_to_array($file));

そして、次のように配列データをローカル変数に抽出できます。

$data = array_combine(range(1, count($data)), $data);
extract($data, EXTR_PREFIX_ALL, 'vrble');

array_combineおよびを参照してくださいextract

ただし、私に尋ねた場合は、引き続き配列を使用する必要があります。

于 2012-12-18T11:45:09.947 に答える
0

ほんの少しの編集

for ($c=0; $c < $num; $c++) 
{
    $vname = 'vrble' . ($c+1);
    $$vname = $data[$c][1];
}
于 2012-12-18T11:46:40.197 に答える
0

while ループに入る前に反復子変数を作成します。

$i = 0;

...その後、while ループ内で次の操作を行います。

list(${'vrble'.++$i}, ${'vrble'.++$i}) = $data;

(常に 1 行あたり 2 列であると仮定します。詳細については、list() のマニュアルを参照してください。

于 2012-12-18T11:47:12.990 に答える
0
<?php
$row = 1;
$arr = array();
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            $arr[$c] = $data[$c];
        }
    }
    fclose($handle);
}
?>
于 2012-12-18T11:50:35.557 に答える