我有一个函数应该使用array_intersect
函数将数组匹配在一起。我试图将产品名称与来自多个商家的同名商品名称进行匹配。我现在的问题是我使用嵌套的foreach
循环,每当我运行它时,循环总是无限的,它会打印出重复的结果。
这里的功能是:
function get_matching_product3(&$catalogue, $stock) {
$stockSmallCase = array_map('strtolower', $stock);
$catalogueSmallCase = array_map('strtolower', $catalogue);
foreach ($catalogueSmallCase as $key => $value)
{
$catalogueKey = $key;
$catalogueValue = $value;
$catalogueTokens = explode (' ', $catalogueValue);
foreach ($stockSmallCase as $key => $value) {
$stockKey = $key;
$stockValue = $value;
$stockTokens = explode (' ', $stockValue);
$match= array_intersect($stockTokens, $catalogueTokens);
$m = count($match);
$t = count($catalogueTokens);
//echo $m;
//echo $t;
if (($m > 1) && (($m / $t) * 100) >= 90) {
//print_r($match);
echo = $catalogueKey." ".$stockKey;
//echo "</br>";
//echo $stockKey;
}
}
}
return null;
}
答案 0 :(得分:0)
你有
foreach ($catalogueSmallCase as $key => $value)
和
foreach ($stockSmallCase as $key => $value)
我认为问题来自$ key和$ value变量。在循环的某个时候,它们可能被php误解了。
尝试更改它以使其难以分离。