2011-04-23 50 views
0

我有多個foreach的解析數據,我需要相互比較。例如:在PHP中比較嵌套的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_local比較$compare_remote與價值觀的循環,我很可能會使用levenshtein(),但在這個例子中任何的目的就行了。

回答

1
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"; 
      } 
     } 

} 
+0

否這會導致無限循環。 – Wyck 2011-04-23 05:31:02

+0

@Wyck怎麼回事?你的'$ whatever'變量是什麼?這是通過你的'$ string-> path'查詢循環,然後與你在那裏的'$ wahtever'數組中的值進行比較。 – 2011-04-23 05:49:29

+0

$ whatever變量實際上是一個全局數組,我應該提到這一點。 – Wyck 2011-04-23 06:02:12

1

不知道它是什麼你比較,你可以使用這兩個循環鍵/值查找以外的關聯數組。如果有一個公共密鑰,那麼您可以對兩個循環評估的相同值進行操作。理想情況下,我知道你想同時對兩者進行迭代,但這是一種可能導致一組評估數據的可能性。唯一的鍵被保留。

$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))]; 

} 
} 
+0

謝謝我認爲這是我正在尋找的東西,但我仍然不是100%確定如何實現它,但如果您碰巧知道任何文檔,我將不勝感激。 – Wyck 2011-04-23 05:33:02

+0

您可以對鍵和值使用相同的值。所以比較[$ name] = $ name;理想情況下,你檢查是否有一個公共密鑰isset(比較[$ name]),然後做一些有用的事情。也許給我們一個例子,說明你的比較是什麼,也許我們可以提供幫助。當我想到比較時,我從字面上認爲有一個測試,比如if($ name == $ othername),但是你沒有給我們那麼多的信息。 – daganh 2011-04-23 05:56:07

+0

我只比較文本字符串,但我不知道這些值,比如「all in one」,「水果沙拉」,「toronto」,只是普通的詞。第一個循環是一個XML文件,第二個循環是一組詞,我只需要找到匹配的,但他們並不是拼寫正確,例如「水果籃」「水果籃」。 – Wyck 2011-04-23 06:11:47