我有一個csv文件的列表,我需要php來轉換爲一個大的多維數組,測試只有2個PHP超過傳輸第二次轉換時的最大執行時間。多維數組超過最大執行時間
第一轉換從CSV其事數值多維數組
第二轉換從數值多維數組對字符串和數值多維數組,這是在PHP產生錯誤之中。
我的代碼如下:
function parse($data) {
$i = 0;
while (isset($data[$i])) {
$row = 0;
while (isset($data[$i][$row])) {
switch ($row) {
case 0:
//General Item details
$fOv = 0;
while (isset($data[$i][$row][$fOv])) {
$array['Item'][$i][$data[$i][row][$fOv]] = $data[$i][$row + 1][$fOv];
$fOv++; // THIS IS THE PLACE OF THE ERROR
}
break;
case 2:
//General Transaction details
$fOv = 0;
while (isset($data[$i][$row][$fOv])) {
$array['Transaction'][$i][$data[$i][$row][$fOv]] = $data[$i][$row + 1][$fOv];
$fOv++;
}
break;
case 4:
//Buyer details
$fOv = 0;
while (isset($data[$i][$row][$fOv])) {
$array['Transaction']['Buyer'][$i][$data[$i][$row][$fOv]] = $data[$i][$row + 1][$fOv];
$fOv++;
}
break;
case 6:
//Shipping details
$fOv = 0;
while (isset($data[$i][$row][$fOv])) {
$array['Transaction']['Shipping'][$i][$data[$i][$row][$fOv]] = $data[$i][$row + 1][$fOv];
$fOv++;
}
break;
case 8:
//Status details
$fOv = 0;
while (isset($data[$i][$row][$fOv])) {
$array['Transaction']['Status'][$i][$data[$i][$row][$fOv]] = $data[$i][$row + 1][$fOv];
$fOv++;
}
break;
}
$row + 2;
}
$i++;
}
return $array;
}
這是數值數組的樣子:
array (
0 => array (
0 => array (
0 => 'field 1', 1 => 'field 2', 2 => 'field 3' //continues to field 17
)
1 => array (
0 => 'value 1', 1 => 'value 2', 2 => 'value 3' //continues to value 17
//these values are for the fields in array[0][0]
)
2 => array (//same as array[0][0])
3 => array (//same as array[0][1], values for array[0][2])
4 => array (//same as array[0][0])
5 => array (//same as array[0][1], values for array[0][4])
6 => array (//same as array[0][0])
7 => array (//same as array[0][1], values for array[0][6])
8 => array (//same as array[0][0])
9 => array (//same as array[0][1], values for array[0][8])
)
1 => array (
//same structure as array[0], different details
)
)
我想要得到的字符串和數值數組:
array (
0 => array (
'Item' => array (
0 => array (
'field 1' => 'value 1'
'field 2' => 'value 2'
//continues to field 17
)
)
'Transaction' => array (
0 => array (
'field n' => 'value n' //repeated until field 17
'Buyer' => array (
//same as above in array[0]['Item'][0]
)
'Shipping' => array (
//same as above in array[0]['Item'][0]
)
'Status' => array (
//same as above in array[0]['Item'][0]
)
)
)
)
1 => array (
//same structure as array[0], different values
)
)
任何幫助非常感謝,提前感謝。
編輯: 我不想增加最長執行時間,劇本花費時間不超過30秒,一樣的工作腳本我有存儲在首位的CSV文件中的數據。
在這種情況下,將保持腳本運行下去,因爲它能夠在第一種情況下追了上來,因爲當'情況0'執行它應該增加2到'$ ii'並轉到下一個案例。它並不會在情況0中被掛起。當最初將數據存儲在csv文件中時,它甚至不需要5秒鐘,最大執行時間不是問題,這是某處的編碼錯誤。 – CKKiller
編輯它以減少混淆,但我仍然看不到錯誤。 – CKKiller
$ row + 2;應該是$ row + = 2; –