PHP循环将uuid特性分配给数组
我尝试构建一个性能良好的api。此api应通过GuzzleHTTP将产品数据导入shopsystemPHP循环将uuid特性分配给数组,php,xml,loops,for-loop,array-map,Php,Xml,Loops,For Loop,Array Map,我尝试构建一个性能良好的api。此api应通过GuzzleHTTP将产品数据导入shopsystem $articleData['properties'][X]['id'] = property uuid of shopsystem 我循环遍历xml标记,并将功能(如果已分配)映射到shopsystem的相应UUID $articleData['properties'][X]['id'] = property uuid of shopsystem 它很好用。但它的构建非常静态,感觉有缺陷。现
$articleData['properties'][X]['id'] = property uuid of shopsystem
我循环遍历xml标记,并将功能(如果已分配)映射到shopsystem的相应UUID
$articleData['properties'][X]['id'] = property uuid of shopsystem
它很好用。但它的构建非常静态,感觉有缺陷。现在我正在努力提高性能
xml可以包含多达1000篇文章的结尾,其中包含多达300种不同的功能。这些功能中的每一个都是shopsystem中的属性选项
$articleData['properties'][X]['id'] = property uuid of shopsystem
是否有更好的方法将特性映射到相应的uuid,而不是静态的if elseif
-循环?我在考虑一个包含所有特性的映射表,它是uuid。。。但我不知道如何开始。请帮忙
XML文件:
<exportxml>
<article key="1">
<datagroup1>
<feature key="feature1">
<eng> XYZ </eng>
<ger> XYZ </ger>
<esp> XYZ </esp>
</feature>
<feature key="feature2">
<eng> XYZ </eng>
<ger> XYZ </ger>
<esp> XYZ </esp>
</feature>
[...]
</datagroup1>
</article>
<article key="2">
<datagroup1>
<feature key="feature1">
<eng> ZYX </eng>
<ger> ZYX </ger>
<esp> ZYX </esp>
</feature>
[...]
</datagroup1>
</article>
</exportxml>
您可以使用
uuid
创建$features
数组,然后可以改进代码。例如:
<?php
$features = [
'feature1' =>[
'XYZ' => 'dfa2394bcf754a19b9e72d14207ad7d0',
'XZY' => '582a5b9654564055a2e56a0f9a7a399e',
'YZX' => '582a5b9654564055a2e56a0f9a7a399e'
],
'feature2' =>[
'XYZ' => 'ert2394bcf754a19b9e72d14207ad7d0',
'XZY' => 'op2a5b9654564055a2e56a0f9a7a399e',
'YZX' => '1sd5b9654564055a2e56a0f9a7a399e'
]
];
foreach ($XML->article as $article) {
foreach ($article->datagroup1->feature as $key => $feature) { // introduce $key
if(isset($features[$feature['key']])){
$featureName = (string)$feature->en;
if(isset($features[$feature['key']][$featureName])){
$articleData['properties'][$key]['id'] = $features[$feature['key']][$featureName]; // use $key
}
}
}
}
文章作为$article){
foreach($article->datagroup1->featureas$key=>$feature){//引入$key
如果(isset($features[$feature['key']])){
$featureName=(字符串)$feature->en;
如果(设置($features[$feature['key']][$featureName])){
$articleData['properties'][$key]['id']=$features[$feature['key']][$featureName];//使用$key
}
}
}
}
注:
以上是假设,因为我不确定你能不能做到
确保您正在检查您所在的每一个条件,因为通过查看代码数据,您并不完全清楚要检查的条件。您可以使用
uuid
创建一个$features
数组,然后您可以改进代码。示例:。但这是假设性的,因为我不确定您是否能做到这一点?在XML中您也有:ZYX
,而在代码中您从未检查过ZYX
的条件谢谢您的示例!这就是我要找的。XML只是一个例子,不用担心,我检查了每个条件:)