PHP循环将uuid特性分配给数组

PHP循环将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 它很好用。但它的构建非常静态,感觉有缺陷。现

我尝试构建一个性能良好的api。此api应通过GuzzleHTTP将产品数据导入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只是一个例子,不用担心,我检查了每个条件:)