CSV到PHP再到JSON到MySQL
我正在为客户开发定制定价矩阵,他们有代码来区分具有不同选项的产品,一个代码有6种不同的变体,因为有6种不同类型的材料会产生不同的成本,其他螺栓也会根据材料更改代码和成本。。。等等 首先,我将向您展示我的价格数据库结构(MySQL) 我将每个代码的所有6个价格作为JSON存储在prices and brand rate字段中,这将由JS稍后处理 该数据库的典型条目如下所示:CSV到PHP再到JSON到MySQL,php,mysql,json,csv,Php,Mysql,Json,Csv,我正在为客户开发定制定价矩阵,他们有代码来区分具有不同选项的产品,一个代码有6种不同的变体,因为有6种不同类型的材料会产生不同的成本,其他螺栓也会根据材料更改代码和成本。。。等等 首先,我将向您展示我的价格数据库结构(MySQL) 我将每个代码的所有6个价格作为JSON存储在prices and brand rate字段中,这将由JS稍后处理 该数据库的典型条目如下所示: |1|JP6000|["F","F","n\/a","F","F","F"]|["2.92","2.92","n\/a","
|1|JP6000|["F","F","n\/a","F","F","F"]|["2.92","2.92","n\/a","4.86","6.35","7.62"]|["2.77","2.77","n\/a","4.62","6.03","7.24"]|["2.55","2.55","4.21","4.25","5.55","6.66"]|["2.45","2.45","3.83","4.08","5.33","6.40"]|["2.38","2.38","3.64","3.96","5.17","6.20"]|["2.50","2.33","3.47","3.89","5.08","6.10"]
array(2) {
["JP6000"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.21"
["Price_250"]=>
string(4) "3.83"
["Price_500"]=>
string(4) "3.64"
["Price_1000"]=>
string(4) "3.47"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "4.86"
["Price_50"]=>
string(4) "4.62"
["Price_100"]=>
string(4) "4.25"
["Price_250"]=>
string(4) "4.08"
["Price_500"]=>
string(4) "3.96"
["Price_1000"]=>
string(4) "3.89"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "6.35"
["Price_50"]=>
string(4) "6.03"
["Price_100"]=>
string(4) "5.55"
["Price_250"]=>
string(4) "5.33"
["Price_500"]=>
string(4) "5.17"
["Price_1000"]=>
string(4) "5.08"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "7.62"
["Price_50"]=>
string(4) "7.24"
["Price_100"]=>
string(4) "6.66"
["Price_250"]=>
string(3) "6.4"
["Price_500"]=>
string(3) "6.2"
["Price_1000"]=>
string(3) "6.1"
["Material"]=>
string(8) "Richmond"
}
}
["JP6010"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.77"
["Price_250"]=>
string(4) "4.33"
["Price_500"]=>
string(4) "4.13"
["Price_1000"]=>
string(4) "3.93"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "5.41"
["Price_50"]=>
string(4) "5.14"
["Price_100"]=>
string(4) "4.74"
["Price_250"]=>
string(4) "4.55"
["Price_500"]=>
string(4) "4.41"
["Price_1000"]=>
string(4) "4.33"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(3) "6.9"
["Price_50"]=>
string(4) "6.56"
["Price_100"]=>
string(4) "6.04"
["Price_250"]=>
string(3) "5.8"
["Price_500"]=>
string(4) "5.63"
["Price_1000"]=>
string(4) "5.52"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "8.28"
["Price_50"]=>
string(4) "7.87"
["Price_100"]=>
string(4) "7.25"
["Price_250"]=>
string(4) "6.96"
["Price_500"]=>
string(4) "6.76"
["Price_1000"]=>
string(4) "6.62"
["Material"]=>
string(8) "Richmond"
}
}
}
array(2) {
["JP6000"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.21"
["Price_250"]=>
string(4) "3.83"
["Price_500"]=>
string(4) "3.64"
["Price_1000"]=>
string(4) "3.47"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "4.86"
["Price_50"]=>
string(4) "4.62"
["Price_100"]=>
string(4) "4.25"
["Price_250"]=>
string(4) "4.08"
["Price_500"]=>
string(4) "3.96"
["Price_1000"]=>
string(4) "3.89"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "6.35"
["Price_50"]=>
string(4) "6.03"
["Price_100"]=>
string(4) "5.55"
["Price_250"]=>
string(4) "5.33"
["Price_500"]=>
string(4) "5.17"
["Price_1000"]=>
string(4) "5.08"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "7.62"
["Price_50"]=>
string(4) "7.24"
["Price_100"]=>
string(4) "6.66"
["Price_250"]=>
string(3) "6.4"
["Price_500"]=>
string(3) "6.2"
["Price_1000"]=>
string(3) "6.1"
["Material"]=>
string(8) "Richmond"
}
}
["JP6010"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.77"
["Price_250"]=>
string(4) "4.33"
["Price_500"]=>
string(4) "4.13"
["Price_1000"]=>
string(4) "3.93"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "5.41"
["Price_50"]=>
string(4) "5.14"
["Price_100"]=>
string(4) "4.74"
["Price_250"]=>
string(4) "4.55"
["Price_500"]=>
string(4) "4.41"
["Price_1000"]=>
string(4) "4.33"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(3) "6.9"
["Price_50"]=>
string(4) "6.56"
["Price_100"]=>
string(4) "6.04"
["Price_250"]=>
string(3) "5.8"
["Price_500"]=>
string(4) "5.63"
["Price_1000"]=>
string(4) "5.52"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "8.28"
["Price_50"]=>
string(4) "7.87"
["Price_100"]=>
string(4) "7.25"
["Price_250"]=>
string(4) "6.96"
["Price_500"]=>
string(4) "6.76"
["Price_1000"]=>
string(4) "6.62"
["Material"]=>
string(8) "Richmond"
}
}
}
客户需要能够上传CSV,可以无缝更新这些价格
CSV文件将如下所示:
如果您查看MySQL行条目,您应该能够将数据结合起来,所以问题就出在这里了
我使用此选项处理CSV文件:
parseCSV v0.4.3测试版
我用JP代码将所有结果分组如下:
|1|JP6000|["F","F","n\/a","F","F","F"]|["2.92","2.92","n\/a","4.86","6.35","7.62"]|["2.77","2.77","n\/a","4.62","6.03","7.24"]|["2.55","2.55","4.21","4.25","5.55","6.66"]|["2.45","2.45","3.83","4.08","5.33","6.40"]|["2.38","2.38","3.64","3.96","5.17","6.20"]|["2.50","2.33","3.47","3.89","5.08","6.10"]
array(2) {
["JP6000"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.21"
["Price_250"]=>
string(4) "3.83"
["Price_500"]=>
string(4) "3.64"
["Price_1000"]=>
string(4) "3.47"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "4.86"
["Price_50"]=>
string(4) "4.62"
["Price_100"]=>
string(4) "4.25"
["Price_250"]=>
string(4) "4.08"
["Price_500"]=>
string(4) "3.96"
["Price_1000"]=>
string(4) "3.89"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "6.35"
["Price_50"]=>
string(4) "6.03"
["Price_100"]=>
string(4) "5.55"
["Price_250"]=>
string(4) "5.33"
["Price_500"]=>
string(4) "5.17"
["Price_1000"]=>
string(4) "5.08"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "7.62"
["Price_50"]=>
string(4) "7.24"
["Price_100"]=>
string(4) "6.66"
["Price_250"]=>
string(3) "6.4"
["Price_500"]=>
string(3) "6.2"
["Price_1000"]=>
string(3) "6.1"
["Material"]=>
string(8) "Richmond"
}
}
["JP6010"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.77"
["Price_250"]=>
string(4) "4.33"
["Price_500"]=>
string(4) "4.13"
["Price_1000"]=>
string(4) "3.93"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "5.41"
["Price_50"]=>
string(4) "5.14"
["Price_100"]=>
string(4) "4.74"
["Price_250"]=>
string(4) "4.55"
["Price_500"]=>
string(4) "4.41"
["Price_1000"]=>
string(4) "4.33"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(3) "6.9"
["Price_50"]=>
string(4) "6.56"
["Price_100"]=>
string(4) "6.04"
["Price_250"]=>
string(3) "5.8"
["Price_500"]=>
string(4) "5.63"
["Price_1000"]=>
string(4) "5.52"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "8.28"
["Price_50"]=>
string(4) "7.87"
["Price_100"]=>
string(4) "7.25"
["Price_250"]=>
string(4) "6.96"
["Price_500"]=>
string(4) "6.76"
["Price_1000"]=>
string(4) "6.62"
["Material"]=>
string(8) "Richmond"
}
}
}
array(2) {
["JP6000"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "2.92"
["Price_50"]=>
string(4) "2.77"
["Price_100"]=>
string(4) "2.55"
["Price_250"]=>
string(4) "2.45"
["Price_500"]=>
string(4) "2.38"
["Price_1000"]=>
string(4) "2.33"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.21"
["Price_250"]=>
string(4) "3.83"
["Price_500"]=>
string(4) "3.64"
["Price_1000"]=>
string(4) "3.47"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "4.86"
["Price_50"]=>
string(4) "4.62"
["Price_100"]=>
string(4) "4.25"
["Price_250"]=>
string(4) "4.08"
["Price_500"]=>
string(4) "3.96"
["Price_1000"]=>
string(4) "3.89"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "6.35"
["Price_50"]=>
string(4) "6.03"
["Price_100"]=>
string(4) "5.55"
["Price_250"]=>
string(4) "5.33"
["Price_500"]=>
string(4) "5.17"
["Price_1000"]=>
string(4) "5.08"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6000"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "7.62"
["Price_50"]=>
string(4) "7.24"
["Price_100"]=>
string(4) "6.66"
["Price_250"]=>
string(3) "6.4"
["Price_500"]=>
string(3) "6.2"
["Price_1000"]=>
string(3) "6.1"
["Material"]=>
string(8) "Richmond"
}
}
["JP6010"]=>
array(6) {
[0]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(10) "Belluno PU"
}
[1]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "3.41"
["Price_50"]=>
string(4) "3.24"
["Price_100"]=>
string(4) "2.98"
["Price_250"]=>
string(4) "2.86"
["Price_500"]=>
string(4) "2.78"
["Price_1000"]=>
string(4) "2.73"
["Material"]=>
string(9) "Torino PU"
}
[2]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(3) "n/a"
["Price_25"]=>
string(3) "n/a"
["Price_50"]=>
string(3) "n/a"
["Price_100"]=>
string(4) "4.77"
["Price_250"]=>
string(4) "4.33"
["Price_500"]=>
string(4) "4.13"
["Price_1000"]=>
string(4) "3.93"
["Material"]=>
string(11) "Full Colour"
}
[3]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "5.41"
["Price_50"]=>
string(4) "5.14"
["Price_100"]=>
string(4) "4.74"
["Price_250"]=>
string(4) "4.55"
["Price_500"]=>
string(4) "4.41"
["Price_1000"]=>
string(4) "4.33"
["Material"]=>
string(8) "Finecell"
}
[4]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(3) "6.9"
["Price_50"]=>
string(4) "6.56"
["Price_100"]=>
string(4) "6.04"
["Price_250"]=>
string(3) "5.8"
["Price_500"]=>
string(4) "5.63"
["Price_1000"]=>
string(4) "5.52"
["Material"]=>
string(5) "Nappa"
}
[5]=>
array(9) {
["Code"]=>
string(6) "JP6010"
["Brand Rate"]=>
string(1) "F"
["Price_25"]=>
string(4) "8.28"
["Price_50"]=>
string(4) "7.87"
["Price_100"]=>
string(4) "7.25"
["Price_250"]=>
string(4) "6.96"
["Price_500"]=>
string(4) "6.76"
["Price_1000"]=>
string(4) "6.62"
["Material"]=>
string(8) "Richmond"
}
}
}
所以我需要做的是进一步将这些数据分组,并将其转换为JSON字符串,就像您在MySQL记录中看到的那样,使用每个代码的信息
JP6000的price_25 json数组的第一个条目是2.92,第二个条目是2.92,第三个条目是n/a
这还需要循环并根据作为主键的JP代码相应地更新每个mysql行
我希望这一切都有意义?非常狡猾
$rows = array();
$format = array('brand_rate'=>'Brand Rate','price_25'=>'Price_25','price_50'=>'Price_50','price_100'=>'Price_100','price_250'=>'Price_250','price_500'=>'Price_500','price_1000'=>'Price_1000');
// Build $rows array
foreach ($groupedData as $jpCode => $jpData) {
foreach ($jpData as $rowIndex => $rowData) {
foreach ($format as $csvCol) {
$rows[$jpCode][$csvCol][$rowIndex] = $rowData[$csvCol];
}
}
}
// Loop through $rows and INSERT them
foreach ($rows as $jpCode => $row) {
$cols = $vals = $duplicates = array();
foreach ($format as $sqlCol => $csvCol) {
$val = mysql_real_escape_string(json_encode($row[$csvCol]));
$duplicates[] = "`$sqlCol` = '$val'";
$cols[] = $sqlCol;
$vals[] = $val;
}
$query = "INSERT INTO `dbname`.`tablename` (`jp_code`,`".implode('`,`',$cols)."`) VALUES ('$jpCode','".implode("','",$vals)."') ON DUPLICATE KEY UPDATE ".implode(", ",$duplicates);
mysql_query($query);
}
这就产生了很多假设,比如您使用的是MySQL,您使用的是老式的MySQL扩展,而不是PDO,您解析的数据存储在一个名为$groupedData
的变量中,等等
将有相当多的优化可以在它上执行,我讨厌使用那么多的foreach
循环,但这只是一个简单的例子。您可能需要在jp_code
上添加唯一索引(如果还没有),并在重复键更新上向查询添加
我没有测试过它,所以它可能不是100%正确,但我相当肯定它至少会在正确的方向上给你一个提示
编辑
请注意,这会将字段作为JSON对象而不是数组放入数据库,但它们(希望)仍能像您在JS端期望的那样工作
还要注意的是,我没有对Material
CSV字段做任何处理,因为它在数据库模式中丢失了
我还刚刚在查询代码中添加了一个关于重复密钥更新的子句。您可能想考虑我的类。它将CSV转换为MySQL插入查询、数组、JSON和HTML表
/**
* CSV_parser
*
* @package
* @author Dave's Simple Project
* @copyright MESMERiZE
* @version 2012
* @access public
*/
class CSV_parser
{
private $source;
private $array;
private $length;
private $delimiter;
private $class;
private $padding;
private $border;
private $id;
private $width;
/**
* CSV_parser::__construct()
*
* @param mixed $source
* @param integer $length
* @param string $delimiter
* @return
*/
public function __construct($source, $length = 8000, $delimiter = ',')
{
try
{
// Lets try to open the file and check if its readable else throw an error.
if (!isset($source) || !is_readable($source))
{
throw new Exception('File Not Found!');
return false;
} else
{
//set the source file
$this->source = $source;
$this->length = $length;
$this->delimiter = $delimiter;
return true;
}
}
catch (exception $e)
{
// Send an error message :)
echo $e->getMessage();
}
parent::__construct();
}
/**
* CSV_parser::toArray()
*
* @return
*/
public function toArray()
{
// 1. First open the source file
$handler = fopen($this->source, 'r');
// 2. Turn the CSV to array
while (($data = fgetcsv($handler, $this->length, $this->delimiter)) !== false)
{
$a[] = $data;
}
// 3. Get the first index to be used as the key
$h = $a[0];
// 4. Lets remove the $h variable's empty values
foreach ($h as $k => $v)
{
if ($v != '')
{
$headers[$k] = $v;
}
}
// 4. Remove the first index and leave the others to be used as the value
$a = array_slice($a, 1);
// 5. Make an empty array
$array = array();
// 6. Lets loop the values
foreach ($a as $k => $v)
{
$i = 0;
// then loop the headers then for each headers lets get the values
// from variable $a based on how many the headers are. So we increment.
foreach ($headers as $key => $value)
{
$array[$k][$value] = $v[$i];
$i++;
}
}
return $array;
fclose($handler);
}
/**
* CSV_parser::toTable()
*
* @param string $width
* @param integer $border
* @param integer $spacing
* @param integer $padding
* @param string $class
* @param mixed $id
* @return
*/
public function toTable($width = '100%', $border = 1, $spacing = 0, $padding = 5,
$class = 'mytable', $id = null)
{
$this->width = $width;
$this->class = $class;
$this->spacing = $spacing;
$this->padding = $padding;
$this->border = $border;
$this->id = $id;
$table = '<table width="' . $this->width . '" class="' . $this->class .
'" cellspacing="' . $this->spacing . '" cellpadding="' . $this->padding .
'" id="' . $this->id . '" border="' . $this->border . '">';
// 1. Lets create some table headers
$table .= '<thead><tr>';
foreach ($this->toArray() as $key => $value)
{
$headers = $value;
}
$headers = array_keys($headers);
foreach ($headers as $th)
{
$table .= '<th>' . $th . '</th>';
}
$table .= '</tr></thead>';
// Lets create the table body
$table .= '<tbody>';
foreach ($this->toArray() as $key => $value)
{
$table .= '<tr>';
foreach ($value as $val)
{
$table .= '<td>' . $val . '</td>';
}
$table .= '<tr>';
}
$table .= '</tbody>';
$table .= '</table>';
return $table;
}
/**
* CSV_parser::toJSON()
*
* @return
*/
public function toJSON()
{
return json_encode($this->toArray());
}
public function toMYSQL($table_name = 'table_name')
{
$str = '';
$the_array = $this->toArray();
foreach($the_array as $array)
{
$k = implode(',',array_keys($array));
$v = "'".implode("','",array_values($array))."'";
$str .= "INSERT INTO $table_name($k) VALUES($v)\n";
}
return $str;
}
}
';
回声';
打印($data->toArray());
回声';
标准答案,不要以JSON格式存储数据。这是为了演示。谢谢你的有益评论。。。不幸的是,并不是每件事都像魔术一样有效,所以我们必须找到避免对客户说“不”的方法,这是我们向客户提供此解决方案的唯一方法。