1

我正在用 php 读取一个 Excel 文件。没问题,但我被困在一个合乎逻辑的部分。我想创建一个包含多个其他数据数组的数组。

数据在我的 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]
    ), ....

那么我怎样才能使这个动态(for循环?),以便我有1个大索引数组,有多个关联数组?注意:我的 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 回答