比较php中没有全局变量的嵌套foreach变量



我有多个foreach的解析数据,我需要相互比较。例如:

foreach ($xml_string->xpath('//location') as $character) {
  $xml_name = $character->earthname;
  $compare_remote = strtolower(preg_replace("/[^a-zA-Z0-9 ]/", "", $xml_name));
}
foreach ( $whatever as $key => $value ) {
 foreach ($value as $pkey){
   $value_name = $pkey["spacename"];
   $compare_local = strtolower(preg_replace("/[^a-zA-Z0-9]/", '', $value_name));
 }
}

我如何循环遍历两组foreach来比较$compare_remote中的所有值与$compare_local中的值,我可能会使用levenshtein(),但为了这个例子的缘故,任何东西都可以

    foreach ($xml_string->xpath('//location') as $character) {
      $xml_name = $character->earthname;
      $compare_remote = strtolower(preg_replace("/[^a-zA-Z0-9 ]/", "", $xml_name));
       foreach ( $whatever as $key => $value ) {
          foreach ($value as $pkey){
              $value_name = $pkey["spacename"];
              $compare_local = strtolower(preg_replace("/[^a-zA-Z0-9]/", '', $value_name));
                if( $compare_remote==$compare_local) echo "match";
          }
        }
 }

在不知道要比较的是什么的情况下,可以在两个循环之外使用关联数组作为键/值查找。如果存在一个公共键,那么您可以对两个循环计算的相同值进行操作。理想情况下,我知道你想同时迭代这两个,但这是一种可能的结果,在一个评估的数据集。保存唯一的键。

$compare[];
foreach ($xml_string->xpath('//location') as $character) {
  $xml_name = $character->earthname;
  $compare[strtolower(preg_replace("/[^a-zA-Z0-9 ]/", "", $xml_name))];
}
foreach ( $whatever as $key => $value ) {
 foreach ($value as $pkey){
   $value_name = $pkey["spacename"];
   $compare[strtolower(preg_replace("/[^a-zA-Z0-9]/", '', $value_name))];
 }
}

最新更新