比较数组中的所有字符串与另一个数组中的所有字符串PHP

时间:2011-10-30 18:01:44

标签: php arrays string compare

我想要做的是真的,但我会详细介绍以确保它易于理解。 我有一个数组,里面有几个字符串。然后,我有另一个其他短字符串通常只有一两个字。

我需要它,以便如果我的应用程序在第二个数组中找到一个字符串单词,在第一个数组字符串之一中它将继续进行下一个操作。 因此,例如,如果第一个数组中的一个字符串是“This is PHP Code”,那么第二个字符串中的一个字符串是“PHP”然后它找到一个匹配它继续进行下一个操作。我可以使用以下代码执行此操作:

for ( $i = 0; $i < count($Array); $i++) {
    $Arrays = strpos($Array[$i],$SecondArray[$i]);

    if ($Arrays === false) {

        echo 'Not Found Array String';

    }
    else {
        echo 'Found Array String';

但是,这只会将循环中当前索引处的First Array对象与循环中的Second Array对象当前索引进行比较。

我需要它来比较数组中的所有值,以便它在第一个数组中的每个值中搜索第二个数组中的First Value,然后在第一个数组中搜索第二个数组中第二个值的每个值等等。

我想我必须做两个循环?我试过这个,但是数组只有返回第一个值的问题。

如果有人可以提供帮助,我们将不胜感激! 我会标记正确的答案和+ 1任何有用的评论!

谢谢!

3 个答案:

答案 0 :(得分:2)

以下可能是一个解决方案:

// loop through array1
foreach($array1 as $line) {
    // check if the word is found
    $word_found = false;

    // explode on every word
    $words = explode(" ", $line);

    // loop through every word
    foreach($words as $word) {
        if(in_array($word, $array2)) {
            $word_found = true;
            break;
        }
    }

    // if the word is found do something
    if($word_found) {
        echo "There is a match found.";
    } else {
        echo "No match found."
    }
}

应该给你想要的结果。我绝对相信有一种更有效的方法可以做到这一点..但那对你来说2找到了我的好运..祝你好运

答案 1 :(得分:1)

您可以先规范化数据,然后使用PHP的内置数组函数来获取两个数组之间的交集。

首先将每个数组转换为包含多个单词的多个字符串,并将其转换为仅包含所有单词的数组。

从字符串中获取所有单词的有用功能可以是str_word_count

然后使用array_intersect将这两个“所有单词”数组相互比较。

这样的事情:

$words1 =  array_unique(str_word_count(implode(' ', $Array), 1));
$words2 =  array_unique(str_word_count(implode(' ', $SecondArray), 1));
$intersection = array_intersect($words1, $words2);

if(count($intersection))
{
    # there is a match!
}

答案 2 :(得分:0)

function findUnit($packaging_units, $packaging)
{
    foreach ($packaging_units as $packaging_unit) {
        if (str_contains(strtoupper($packaging[3]), $packaging_unit)) {
            return $packaging_unit;
        }
    }
}

这里第一个参数是数组,第二个是要查找的变量