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