我有多个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))];
}
}