我想要做的是真的,但我会详细介绍以确保它易于理解。 我有一个数组,里面有几个字符串。然后,我有另一个其他短字符串通常只有一两个字。
我需要它,以便如果我的应用程序在第二个数组中找到一个字符串单词,在第一个数组字符串之一中它将继续进行下一个操作。 因此,例如,如果第一个数组中的一个字符串是“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任何有用的评论!
谢谢!
答案 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;
}
}
}
这里第一个参数是数组,第二个是要查找的变量