0

私はphpにかなり慣れていないので、スタックオーバーフローの質問からこれを取得しましたが、うまく機能しないようです。

<?php
if (($handle = fopen("fullbox.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    echo "<pre>".print_r($data)." <br /></pre>";
}
fclose($handle);
}
echo $data[1];
?>

多数の製品 (csv ファイルから取得できます) を使用して価格を設定するために、いくつかの配列を設定する必要があります。私はちょうどこれをテストしようとしてきました.これは私が得る出力です:

配列 ( [0] => 8.53 )

配列 ( [0] => 4.74 )

配列 ( [0] => 5.00 )

配列 ( [0] => 2.50 )

配列 ( [0] => 6.48 )

配列 ( [0] => 3.99 )

配列 ( [0] => 8.53 )

配列 ( [0] => 4.74 )

配列 ( [0] => 8.53 )

配列 ( [0] => 4.74 )

配列が配列の [0} プレースホルダーにすべての値を設定するのはなぜですか。また、各行の間に 1 があるのはなぜですか。前もって感謝します。

更新これが 10 項目の配列である場合、これは配列内の 1 エントリの値を返す必要がありますが、そうではありません。後で変数として使用できるように、すべての価格を保存する必要があるだけです。印刷する必要はありません。再度、感謝します。

echo $data[1];
4

4 に答える 4

2

print_rデフォルトではフォーマットされた配列を返しません。それを出力して返します1true2 番目のパラメーターとして渡します。

echo "<pre>".print_r($data, true)." <br /></pre>";

配列は から始まるため、すべての値は0配列のインデックスにあります0。そこには何も問題はありません。

于 2012-07-12T14:05:29.023 に答える
1

これを試して:

$f = fopen(yourfile, "r");
$fs = filesize(yourfile);
$content = fread($f, $fs);

$lines = explode("\n", $content);
$result = array();
foreach($lines as $line) $result[] = explode(",", $line);
于 2012-07-12T14:06:11.793 に答える
0

Comma Seperated-Values のような CSV は、各行の配列です。したがって、値が 1 つしかない場合でも、各行は配列です。

また、「print_r」をエコーする必要はありません。

于 2012-07-12T14:06:41.410 に答える
0

また、次の関数を使用して CSV からデータを読み取り、usort() 関数を使用して並べ替えます。

http://www.pearlbells.co.uk/how-to-sort-a1a2-z9z10aa1aa2-az9az10-using-php/

 Read data from the CSV

function readCSV() {
 $csv = array_map('str_getcsv', file('data.csv'));
 array_shift($csv); //remove headers
 $csvData = splitandSort($csv);
 createCSV($csvData);
}
于 2016-11-02T16:15:54.103 に答える