0

質問のタイトルが紛らわしいかもしれませんが、何をしようとしているのかを簡潔に説明する方法がよくわかりません。

CSV の配列をループして、データを異なる名前の変数にロードしようとしています。以下の私の例では、代わりに、配列の各ループで、、およびに$foo_dataなります。$MSFT_data$AAPL_data$FB_data$stocks

$stocks = array($msft, $aapl, $fb);

foreach ($stocks as $stock) {
    $fh = fopen($stock, 'r');
    $header = fgetcsv($fh);

    $foo_data = array();
    while ($line = fgetcsv($fh)) {
        $foo_data[] = array_combine($header, $line);
    }

    fclose($fh);
}

さらに情報が必要な場合はお知らせください。

4

2 に答える 2

2

2 つの問題があります。1 つ目は、変数名を取得できないことです。そのため、スクリプトは , , があることを知る方法がないため$msft$aapl配列$fbと共に名前を渡す必要があります。2 つ目は、可変変数が必要であることです。

試す

$stocks = array('MSFT' => $msft, 'AAPL' => $aapl, 'FB' => $fb);
foreach ($stocks as $key=>$stock) {
    $fh = fopen($stock, 'r');
    $header = fgetcsv($fh);

    $varname = $key . '_data';

    $$varname  = array(); //the double $$ will set the var content as variable ($MSFT_data)
    while ($line = fgetcsv($fh)) {
        ${$varname}[] = array_combine($header, $line);

       //the {} are needed to let PHP know that $varname is the name of the variable and not $varname[].
    }

    fclose($fh);
}
于 2013-03-07T07:56:53.380 に答える
0
$MSFT_data = $foo_data[0];
$AAPL_data = $foo_data[1];
$FB_data = $foo_data[2];

それはあなたにとってどのように機能しますか?

于 2013-03-07T07:54:11.597 に答える