在字符串比较中找不到 echo 单词

Echo words not found in string comparison

我有一个变量和一个数组(也可以是变量)需要比较。我知道如何比较两个字符串,但我不知道如何输出未找到的单词。还没有找到的词需要在一个变量中,以便我以后可以使用它们。

$mystring = array('Net 40', 'Net 44', 'Priv 40');
$findme   = 'Net 44';
if( strpos($mystring, $findme) !== false ) echo $findme." has been found in the string";

编辑
我将重新表述我的问题:如何比较两个变量并输出所有未找到的单词。

strpos 检查你的第二个参数在第一个参数里? 例如

strpos("This is", "is")

这会检查 'is' 是否在字符串中。如果你想检查结果是否在数组中,请按如下操作

if(in_array($findme,mystring)) echo $findme." has been found in the string";

首先,您不应该将 strpos 与数组和字符串一起使用。

你可以做这样的事情:

$mystring = array('Net 40', 'Net 44', 'Priv 40');
$findme   = 'Net 44';

$size = count($mystring)
$notFound = array();

for($i = 0; $i < $size; $i++)
{
    if($mystring[$i] === $findme)
    {
         echo $findme." has been found in the string (actually array)";
    }
    else
    {
        array_push($notFound, $mystring[$i]);
    }
}

如果 mystring 实际上应该是一个字符串,则此代码必须看起来有点不同。我按照你提供的去做了。

您可以使用 array_diff 查找在您成功将一个词与列表中的一个词匹配后剩余的词:

$mystring = array('Net40', 'Net44', 'Priv40');
$findme   = 'Net44';

echo "<br>list of words before: " . implode(",", $mystring);

$mystring = array_diff($mystring, array($findme));

echo "<br>list of words after: " . implode(",", $mystring);

输出:

list of words before: Net40,Net44,Priv40
list of words after: Net40,Priv40

数组解决方案。如果您有字符串,可以使用 explode 函数将它们转换为数组。

 <?php
    $mystring = array('Net40', 'Net44', 'Priv40');
    $findme   = array('Net44');
    $result=array_diff($mystring,$findme);

    //$result is an array of elements that was in $mystring but not in $findme
    print_r($result);
    ?>

没找到有点歧义,慎入:

<?php

$haystack = array('Net40', 'Net44', 'Priv40');
$needles  = array('Net44', 'NetBsd');

var_dump(array_diff($haystack, $needles));
var_dump(array_diff($needles, $haystack));
var_dump(array_intersect($haystack, $needles));

输出:

array (size=2)
  0 => string 'Net40' (length=5)
  2 => string 'Priv40' (length=6)

array (size=1)
  1 => string 'NetBsd' (length=6)

array (size=1)
  1 => string 'Net44' (length=5)