将一个数组中的所有字符串与另一个数组(PHP)中的所有字符串进行比较
我想做的其实是,但我会深入到很多细节,以确保它是容易理解的。 我有一个数组,其中有几个字符串。然后我有另一个,里面几乎没有其他短字符串,通常是一个或两个单词 我需要它,这样如果我的应用程序在第二个数组中找到一个字符串,在第一个字符串数组中,它将继续执行下一个操作。 例如,如果第一个数组中的一个字符串是“This is PHP Code”,第二个数组中的一个字符串是“PHP”,那么它会找到一个匹配项,并继续执行下一个操作。我可以使用以下代码执行此操作:将一个数组中的所有字符串与另一个数组(PHP)中的所有字符串进行比较,php,arrays,string,compare,Php,Arrays,String,Compare,我想做的其实是,但我会深入到很多细节,以确保它是容易理解的。 我有一个数组,其中有几个字符串。然后我有另一个,里面几乎没有其他短字符串,通常是一个或两个单词 我需要它,这样如果我的应用程序在第二个数组中找到一个字符串,在第一个字符串数组中,它将继续执行下一个操作。 例如,如果第一个数组中的一个字符串是“This is PHP Code”,第二个数组中的一个字符串是“PHP”,那么它会找到一个匹配项,并继续执行下一个操作。我可以使用以下代码执行此操作: for ( $i = 0; $i <
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';
for($i=0;$i
但是,这仅比较循环中当前索引处的第一个数组对象与循环中当前索引处的第二个数组对象
我需要它比较数组中的所有值,这样它就会在第一个数组中的每个值中搜索第二个数组中的第一个值,然后在第一个数组中的每个值中搜索第二个数组中的第二个值,依此类推
我想我必须做两个循环?我试过了,但是数组只返回第一个值时出现了问题
如果有人能帮忙,我们将不胜感激!
我会记下正确答案和+1任何有用的评论
谢谢!您可以先规范化数据,然后使用PHP的内置数组函数获得两个数组之间的交集 首先,将包含多个单词的多字符串的每个数组转换为仅包含所有单词的数组 可以使用一个有用的函数从字符串中获取所有单词 然后使用以下命令相互比较这两个“所有单词”数组 大概是这样的:
$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!
}
您可以首先规范化数据,然后使用PHP的内置数组函数获得两个数组之间的交集 首先,将包含多个单词的多字符串的每个数组转换为仅包含所有单词的数组 可以使用一个有用的函数从字符串中获取所有单词 然后使用以下命令相互比较这两个“所有单词”数组 大概是这样的:
$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!
}
也许以下是一个解决方案:
// 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找出我的问题。祝你好运,也许以下是一个解决方案:
// 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."
}
}
function findUnit($packaging_units, $packaging)
{
foreach ($packaging_units as $packaging_unit) {
if (str_contains(strtoupper($packaging[3]), $packaging_unit)) {
return $packaging_unit;
}
}
}
我绝对相信有一种更有效的方法可以做到这一点但那是给你的2发现我需要祝你好运
function findUnit($packaging_units, $packaging)
{
foreach ($packaging_units as $packaging_unit) {
if (str_contains(strtoupper($packaging[3]), $packaging_unit)) {
return $packaging_unit;
}
}
}
这里第一个参数是数组,第二个参数是要查找的变量
这里第一个参数是数组,第二个参数是变量来查找您好,谢谢您的回复,我想我知道您在这里的意思,不过问题是我需要将它保留为两个独立的数组,因为我需要每个数组的索引位置,这样我就可以将每个数组匹配的条目存储为变量以备以后使用。@ApiMail:您不需要需要对数组进行内爆,这样您就可以维护索引。如果您在问题中添加演示数据,并更好地指定您希望从中获得什么,那么更改代码示例以更好地向您展示我所写的内容应该很简单。谢谢,我找到了一种使用两个循环的方法,非常感谢!您好,谢谢您的回复,我我想我知道你在这里的意思,尽管问题是我需要将它保留为两个独立的数组,因为我需要每个数组的索引位置,这样我可以将每个数组匹配的条目存储为变量,以供以后使用。@ApiMail:你不需要对数组进行内爆,所以你可以维护索引。如果你在问题中添加演示数据,最好指定你想从中得到什么,更改代码示例以更好地向你展示我所写的内容应该很简单。谢谢,我找到了一种使用两个循环的方法,非常感谢!非常感谢,我没有尝试这个,因为我找到了使用两个循环的方法。非常感谢!非常感谢,我没有尝试这个,因为我已经找到了使用两个循环的方法我找到了一种使用两个循环的方法。不过非常感谢!