【发布时间】:2017-05-10 00:40:30
【问题描述】:
我有一个如下所示的文件:
Papiers peints > 3D et Perspective > 3D
Papiers peints > Carte du monde
Papiers peints > Fleurs
Papiers peints > Fleurs > Coquelicots
Tableaux > Cartes du monde
Tableaux > Fleurs
Tableaux > Fleurs > Coquelicots
然后我将其转换为格式正确的 csv,如下所示:
"Papiers peints","3D et Perspective","3D"
"Papiers peints","Carte du monde",
"Papiers peints","Fleurs",
"Papiers peints","Fleurs","Coquelicots"
"Tableaux","Cartes du monde",
"Tableaux","Fleurs",
"Tableaux","Fleurs","Coquelicots"
我需要让这些字段中的每一个都有自己的唯一 ID,该 ID 必须是整数。应该是这样的
"Papiers peints",101,"3D et Perspective",1001,"3D",10001
"Papiers peints",101,"Carte du monde",1002,,
"Papiers peints",101,"Fleurs",1003,,
"Papiers peints",101,"Fleurs",1003,"Coquelicots",10002
"Tableaux",102,"Cartes du monde",1004,,
"Tableaux",102,"Fleurs",1005,,
"Tableaux",102,"Fleurs",1005,"Coquelicots",10003
名称本身并不重要,而且总会有重复的。 我可以通过上传到数据库轻松解决这个问题。 然后我做:
-
select distinct COL1,给他们各自的 ID -
select COL2, group by COL1, COL2,给他们各自的ID -
select COL3, group by COL1, COL2,COL3,给他们各自的 ID - 根据需要重复多次,这可能会很多
如何在 PHP 中执行此操作而无需使用数据库? 一个直接的答案会很好,但即使是设计理念也会有很大帮助。
我的文件中最多可以有 10 列,但这里有一个简化的输入数组可以使用:
$new=[0=>['a0','a1','a2','a3'],1=>['b0','b1','b2','b3'],2=>['c0','c1','c2','c3'],3=>['d0','d1','d2','d3'],4=>['e0','e1','e2','e3']];
预期结果:
[
['a0','101','a1','1001','a2','10001','a3','100001'],
['b0','102','b1','1002','b2','10002','b3','100002'],
['c0','103','c1','1003','c2','10003','c3','100003'],
['d0','104','d1','1004','d2','10004','d3','100004'],
['e0','105','e1','1005','e2','10005','e3','100005']
]
【问题讨论】:
-
我觉得你的问题相当难以理解。请展示您自我解决的最佳尝试。请提供所有必要的输入以生成所需的输出。请编辑您的问题,使其不会被标记为“不清楚”。
-
最好删除并重新开始,可能。并为无法理解而感到抱歉。这是一个相当复杂的问题。
-
如果您愿意,可以这样做,但编辑您的答案并不丢人。您的问题没有标记或否决票。最好把它都留在这里。我会留意更新的问题。
-
完成了。我更新了请求,希望现在很清楚。虽然看起来我没有做任何工作,我通常会尽量避免过于宽泛的问题。我仍然认为数组会解决这个问题,我只是不知道我应该用它们做什么。
-
您的更新现在大大改善/清晰。我确信我可以帮助您找到有效的解决方案。我可以问一下您的第二个代码 sn-p (带有双引号但没有递增的 ID)吗?这是一个数组吗?还是带有换行符的字符串?保存此数据的变量的名称是什么?这些答案将帮助我为您编写一个在您的项目中立即有用的方法。 (今天是母亲节周末,所以我不知道我会有多空闲——我有一个家庭——但我会尽快提供答案。)
标签: php arrays multidimensional-array increment array-column