1

PHPでエクセルファイルを読み込んでいます。それは問題ありませんが、少し論理的な部分で立ち往生しています。データを含む他の複数の配列を含む配列を作成したいと考えています。

データは、どの列から読み取りを開始する必要があるかを知っているExcelファイルで提供されますが、これは動的であるため、いつ停止するかはわかりません。

私の質問は、列を読み取り、5 列ごとに新しい配列を作成するループを作成する方法です。

だから私が欲しいのは次のようなものです:

(My data for the excell file is proved in $line[] each column has its number.)
        array(
        'length' => $line[15],
        'width' => $line[16]
        'price_per' => $line[17],
        'price' => $line[18],
        'stock' => $line[19]
    ),
    array(
        'length' => $line[20],
        'width' => $line[21]
        'price_per' => $line[22],
        'price' => $line[23],
        'stock' => $line[24]
    ),
    array(
        'length' => $line[25],
        'width' => $line[26]
        'price_per' => $line[27],
        'price' => $line[28],
        'stock' => $line[29]
    ), ....

では、複数の関連付けられた配列を持つ 1 つの大きなインデックス付き Array を持つように、これを動的に (for ループ?) するにはどうすればよいでしょうか? 注: 私の for ループは常に行 [15] から開始する必要があります!

4

2 に答える 2

7

まず、$line処理したくない要素がある場合 (たとえば、例が示すように最初の 15 個)、次のように切り捨てますarray_slice

$line = array_slice($line, 15);

次にarray_chunk、元の配列をできるだけ多くの部分に分割するために使用します。

$chunks = array_chunk($line, 5);

次に、以下を使用して各値を正しいキーに関連付けて、各チャンクを独自の配列に変換しますarray_combine

$results = array();
$keys = array('length', 'width', 'price_per', 'price', 'stock');
foreach ($chunks as $chunk) {
    $results[] = array_combine($keys, $chunk);
}
于 2012-11-15T14:10:25.810 に答える
3
for($i = 15; $i < ????; $i += 5)
{
    $your_array[] = array(
        'length' => $line[$i],
        'width' => $line[$i+1]
        'price_per' => $line[$i+2],
        'price' => $line[$i+3],
        'stock' => $line[$i+4]
    );
}

交換 ????行数で

于 2012-11-15T14:09:40.050 に答える