我试图比较来自2个数组的2个值,1个数组来自XML文件,1个是全局数组。
我不知道确切的金额,它们会随着时间的推移而发生变化,例如,
XML数组有100个值 全局数组有5个值。
比较是针对一个简单的文本字符串,如果它们匹配echo“匹配”,如果不匹配“不匹配”。
问题是,我无法弄清楚如何在没有循环遍历foreach的情况下回显正确的值,而不是仅仅在它回显500次后打印“不匹配”。
我实际上希望输出与全局数组值匹配,因此在实例echo中“不匹配”5次。
在我学习的过程中,我的方法可能是一个非常根本的错误。
$xml_string = simplexml_load_string($xml_body);
// parse XML feed
foreach ($xml_string->xpath('//plugin') as $character) {
$xml_plugin_name = $character->name;
$compare_value_remote = $xml_plugin_name;
//grab the values we want from the global array
foreach ( $plugins as $key => $value ) {
foreach ($value as $pkey){
$plugin_name = $pkey["Name"];
$compare_value_local = $plugin_name;
//compare them
if( $compare_value_remote == $compare_value_local){
echo "match";
}else{
echo "no match";
}
}
}
}
答案 0 :(得分:2)
Ragnar123解决方案看起来不错,只有一个错误让你打印“匹配发现”即使没有匹配
if (count($matches > 0))
shoule be
if (count($matches) > 0)
因为count(boolean)将返回(int)1所以你总是会传递if
答案 1 :(得分:1)
如果我理解正确,你想找到匹配的。
尝试查看此代码
<?php
$xml_string = simplexml_load_string($xml_body);
foreach ($xml_string->xpath('//plugin') as $character)
$xml_plugins[] = $character->name;
foreach ($plugins as $value)
foreach ($value as $pkey)
$global_plugins[] = $pkey["Name"];
$matches = array_intersect($xml_plugins, $global_plugins);
if (count($matches) > 0)
echo "Match found";
else
echo "No match found";
?>