嵌套的foreach循环显示重复结果php

时间:2014-08-03 16:19:11

标签: php arrays foreach nested

我有一个函数应该使用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;
}

1 个答案:

答案 0 :(得分:0)

你有

foreach ($catalogueSmallCase as $key => $value)

foreach ($stockSmallCase as $key => $value)

我认为问题来自$ key和$ value变量。在循环的某个时候,它们可能被php误解了。

尝试更改它以使其难以分离。