У меня есть переменная и массив (также может быть переменной), которые необходимо сравнить. Я знаю, как сравнивать две строки, но я не знаю, как вывести слова, которые не были найдены. Также слова, которые не были найдены, должны быть в переменной, чтобы я мог использовать их позже.
$mystring = array('Net 40', 'Net 44', 'Priv 40');
$findme = 'Net 44';
if( strpos($mystring, $findme) !== false ) echo $findme." has been found in the string";
РЕДАКТИРОВАТЬ
Я перефразирую свой вопрос: как сравнить две переменные и вывести все слова, которые не были найдены.
Вы могли бы использовать 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);
Выход:
список слов перед: Net40, Net44, Priv40
список слов после: Net40, Priv40
strpos проверить, что ваш второй параметр находится в первом параметре?
например
strpos («Это», «есть»)
это проверяет, находится ли 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 фактически является строкой, этот код должен выглядеть немного иначе. Я пошел с тем, что вы предоставили.
Решение с массивами. Если у вас есть строки, вы можете преобразовать их в массив с взрываться функция.
<?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)