PHP - 循环内的数组返回空

时间:2013-11-16 16:01:01

标签: php arrays csv

我正在尝试通过CSV上传将数据添加到2个不同的MySql表中。我已经能够检索信息并在一个表上上传部分信息,但是我在向第二个表发送数据时遇到问题。我想出了以下代码:

$i = 0;
//Loop through the csv file
do {
    if ($data[0]) {

        //Store request information
        //Info for Request Table
        $requester_email = $data[0];
        $requester_name = $data[1];
        $client_name = $data[2];
        $client_country = $data[3];
        $opportunity_number = $data[4];
        $machine_quantity = $data[5];
        $severity = $data[6];

        //Store machine values
        //Info for Serial Numbers Table
        $serialType = array();
        $serialModel = array();

            $serialType[$i] = $data[7];
            $serialModel[$i] = $data[8];

    }
    $i++;
} while ($data = fgetcsv($handle,1000,",","'"));

我遇到了阵列问题。我只能从csv文件的最后一行存储serialType和serialModel。例如,如果csv文件有3行数据:

(     [0] =>空     [1] =>空     [2] =>最后价值还可以 )

为什么我无法存储其他两个值?

1 个答案:

答案 0 :(得分:1)

移动

$serialType = array();
$serialModel = array();

在脚本中do之前。虽然它仍然在do循环中,但它只是每次迭代do - while范围内的初始化变量并清理它。

$i = 0;

$serialType = array();
$serialModel = array();

while ($data = fgetcsv($handle,1000,",","'")) {
...
    $serialType[$i] = $data[7];
    $serialModel[$i] = $data[8];
    $i++;
};